From 9e7421670b627c13f455b7af3348e4fcff168ed9 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Mon, 8 Jan 2024 17:14:10 +0100 Subject: [PATCH] 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 +}