From ee2b891bca20bfe0406d8a055611994a4a0fd615 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Mon, 12 Feb 2024 19:56:37 +0100 Subject: [PATCH] fix: moved the testing contracts --- .echidna.test.js | 6 +++--- contracts/{modules => echidna}/Clusters.sol | 2 +- contracts/{modules => echidna}/DAO.sol | 2 +- contracts/{modules => echidna}/Operators.sol | 2 +- crytic-export/combined_solc.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) rename contracts/{modules => echidna}/Clusters.sol (99%) rename contracts/{modules => echidna}/DAO.sol (93%) rename contracts/{modules => echidna}/Operators.sol (99%) diff --git a/.echidna.test.js b/.echidna.test.js index 0cdfaa0e..a1d69b7d 100644 --- a/.echidna.test.js +++ b/.echidna.test.js @@ -12,13 +12,13 @@ const echidnaPath = '/usr/local/bin/echidna'; console.log(echidnaPath); switch (contract) { case 'Operators': - exec(echidnaPath + ' --config echidna.yaml --contract Operators contracts/modules/Operators.sol'); + exec(echidnaPath + ' --config echidna.yaml --contract Operators contracts/echidna/Operators.sol'); break; case 'Clusters': - exec(echidnaPath + ' --config echidna.yaml --contract Clusters contracts/modules/Clusters.sol'); + exec(echidnaPath + ' --config echidna.yaml --contract Clusters contracts/echidna/Clusters.sol'); break; case 'DAO': - exec(echidnaPath + ' --config echidna.yaml --contract DAO contracts/modules/DAO.sol'); + exec(echidnaPath + ' --config echidna.yaml --contract DAO contracts/echidna/DAO.sol'); break; default: console.log(chalk.redBright('Invalid contract name. Use Operators, Clusters, or DAO.')); diff --git a/contracts/modules/Clusters.sol b/contracts/echidna/Clusters.sol similarity index 99% rename from contracts/modules/Clusters.sol rename to contracts/echidna/Clusters.sol index 4e47590c..acc74b3b 100644 --- a/contracts/modules/Clusters.sol +++ b/contracts/echidna/Clusters.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.18; -import "./SSVClusters.sol"; +import "../modules/SSVClusters.sol"; import "../libraries/ClusterLib.sol"; contract Clusters is SSVClusters { diff --git a/contracts/modules/DAO.sol b/contracts/echidna/DAO.sol similarity index 93% rename from contracts/modules/DAO.sol rename to contracts/echidna/DAO.sol index a40480d4..9016a18e 100644 --- a/contracts/modules/DAO.sol +++ b/contracts/echidna/DAO.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.18; -import "./SSVDAO.sol"; +import "../modules/SSVDAO.sol"; contract DAO is SSVDAO { constructor() { diff --git a/contracts/modules/Operators.sol b/contracts/echidna/Operators.sol similarity index 99% rename from contracts/modules/Operators.sol rename to contracts/echidna/Operators.sol index 03b3e182..1919a4a0 100644 --- a/contracts/modules/Operators.sol +++ b/contracts/echidna/Operators.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.18; -import "./SSVOperators.sol"; +import "../modules/SSVOperators.sol"; import "../libraries/ProtocolLib.sol"; contract Operators is SSVOperators { diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index 5543e36e..ed8ca6e8 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "exportedSymbols": {"ISSVClusters": [2270], "ISSVNetworkCore": [1967]}, "id": 2271, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2116, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 2117, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2271, "sourceUnit": 1968, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 2118, "name": "ISSVNetworkCore", "nameLocations": ["129:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1967, "src": "129:15:0"}, "id": 2119, "nodeType": "InheritanceSpecifier", "src": "129:15:0"}], "canonicalName": "ISSVClusters", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 2270, "linearizedBaseContracts": [2270, 1967], "name": "ISSVClusters", "nameLocation": "113:12:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 2120, "nodeType": "StructuredDocumentation", "src": "151:390:0", "text": "@notice Registers a new validator on the SSV Network\n @param publicKey The public key of the new validator\n @param operatorIds Array of IDs of operators managing this validator\n @param sharesData Encrypted shares related to the new validator\n @param amount Amount of SSV tokens to be deposited\n @param cluster Cluster to be used with the new validator"}, "functionSelector": "06e8fb9c", "id": 2135, "implemented": false, "kind": "function", "modifiers": [], "name": "registerValidator", "nameLocation": "555:17:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2133, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2122, "mutability": "mutable", "name": "publicKey", "nameLocation": "597:9:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "582:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2121, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "582:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2125, "mutability": "mutable", "name": "operatorIds", "nameLocation": "632:11:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "616:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2123, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "616:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2124, "nodeType": "ArrayTypeName", "src": "616:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2127, "mutability": "mutable", "name": "sharesData", "nameLocation": "668:10:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "653:25:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2126, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "653:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2129, "mutability": "mutable", "name": "amount", "nameLocation": "696:6:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "688:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2128, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "688:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2132, "mutability": "mutable", "name": "cluster", "nameLocation": "727:7:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "712:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2131, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2130, "name": "Cluster", "nameLocations": ["712:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "712:7:0"}, "referencedDeclaration": 1906, "src": "712:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "572:168:0"}, "returnParameters": {"id": 2134, "nodeType": "ParameterList", "parameters": [], "src": "749:0:0"}, "scope": 2270, "src": "546:204:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2136, "nodeType": "StructuredDocumentation", "src": "756:270:0", "text": "@notice Removes an existing validator from the SSV Network\n @param publicKey The public key of the validator to be removed\n @param operatorIds Array of IDs of operators managing the validator\n @param cluster Cluster associated with the validator"}, "functionSelector": "12b3fc19", "id": 2147, "implemented": false, "kind": "function", "modifiers": [], "name": "removeValidator", "nameLocation": "1040:15:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2145, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2138, "mutability": "mutable", "name": "publicKey", "nameLocation": "1071:9:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1056:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2137, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1056:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2141, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1098:11:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1082:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2139, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1082:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2140, "nodeType": "ArrayTypeName", "src": "1082:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2144, "mutability": "mutable", "name": "cluster", "nameLocation": "1126:7:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1111:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2143, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2142, "name": "Cluster", "nameLocations": ["1111:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1111:7:0"}, "referencedDeclaration": 1906, "src": "1111:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1055:79:0"}, "returnParameters": {"id": 2146, "nodeType": "ParameterList", "parameters": [], "src": "1143:0:0"}, "scope": 2270, "src": "1031:113:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2148, "nodeType": "StructuredDocumentation", "src": "1254:200:0", "text": "@notice Liquidates a cluster\n @param owner The owner of the cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param cluster Cluster to be liquidated"}, "functionSelector": "bf0f2fb2", "id": 2159, "implemented": false, "kind": "function", "modifiers": [], "name": "liquidate", "nameLocation": "1468:9:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2157, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2150, "mutability": "mutable", "name": "owner", "nameLocation": "1486:5:0", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1478:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2149, "name": "address", "nodeType": "ElementaryTypeName", "src": "1478:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2153, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1509:11:0", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1493:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2151, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1493:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2152, "nodeType": "ArrayTypeName", "src": "1493:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2156, "mutability": "mutable", "name": "cluster", "nameLocation": "1537:7:0", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1522:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2155, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2154, "name": "Cluster", "nameLocations": ["1522:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1522:7:0"}, "referencedDeclaration": 1906, "src": "1522:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1477:68:0"}, "returnParameters": {"id": 2158, "nodeType": "ParameterList", "parameters": [], "src": "1554:0:0"}, "scope": 2270, "src": "1459:96:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2160, "nodeType": "StructuredDocumentation", "src": "1561:232:0", "text": "@notice Reactivates a cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param amount Amount of SSV tokens to be deposited for reactivation\n @param cluster Cluster to be reactivated"}, "functionSelector": "5fec6dd0", "id": 2171, "implemented": false, "kind": "function", "modifiers": [], "name": "reactivate", "nameLocation": "1807:10:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2169, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2163, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1834:11:0", "nodeType": "VariableDeclaration", "scope": 2171, "src": "1818:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2161, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2162, "nodeType": "ArrayTypeName", "src": "1818:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2165, "mutability": "mutable", "name": "amount", "nameLocation": "1855:6:0", "nodeType": "VariableDeclaration", "scope": 2171, "src": "1847:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2164, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1847:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2168, "mutability": "mutable", "name": "cluster", "nameLocation": "1878:7:0", "nodeType": "VariableDeclaration", "scope": 2171, "src": "1863:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2167, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2166, "name": "Cluster", "nameLocations": ["1863:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1863:7:0"}, "referencedDeclaration": 1906, "src": "1863:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1817:69:0"}, "returnParameters": {"id": 2170, "nodeType": "ParameterList", "parameters": [], "src": "1895:0:0"}, "scope": 2270, "src": "1798:98:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2172, "nodeType": "StructuredDocumentation", "src": "2014:283:0", "text": "@notice Deposits tokens into a cluster\n @param owner The owner of the cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param amount Amount of SSV tokens to be deposited\n @param cluster Cluster where the deposit will be made"}, "functionSelector": "bc26e7e5", "id": 2185, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "2311:7:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2183, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2174, "mutability": "mutable", "name": "owner", "nameLocation": "2327:5:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2319:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2173, "name": "address", "nodeType": "ElementaryTypeName", "src": "2319:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2177, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2350:11:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2334:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2175, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2334:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2176, "nodeType": "ArrayTypeName", "src": "2334:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2179, "mutability": "mutable", "name": "amount", "nameLocation": "2371:6:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2363:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2178, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2363:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2182, "mutability": "mutable", "name": "cluster", "nameLocation": "2394:7:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2379:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2181, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2180, "name": "Cluster", "nameLocations": ["2379:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2379:7:0"}, "referencedDeclaration": 1906, "src": "2379:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2318:84:0"}, "returnParameters": {"id": 2184, "nodeType": "ParameterList", "parameters": [], "src": "2411:0:0"}, "scope": 2270, "src": "2302:110:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2186, "nodeType": "StructuredDocumentation", "src": "2418:246:0", "text": "@notice Withdraws tokens from a cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param tokenAmount Amount of SSV tokens to be withdrawn\n @param cluster Cluster where the withdrawal will be made"}, "functionSelector": "686e682c", "id": 2197, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "2678:8:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2195, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2189, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2703:11:0", "nodeType": "VariableDeclaration", "scope": 2197, "src": "2687:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2187, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2188, "nodeType": "ArrayTypeName", "src": "2687:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2191, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "2724:11:0", "nodeType": "VariableDeclaration", "scope": 2197, "src": "2716:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2190, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2716:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2194, "mutability": "mutable", "name": "cluster", "nameLocation": "2752:7:0", "nodeType": "VariableDeclaration", "scope": 2197, "src": "2737:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2193, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2192, "name": "Cluster", "nameLocations": ["2737:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2737:7:0"}, "referencedDeclaration": 1906, "src": "2737:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2686:74:0"}, "returnParameters": {"id": 2196, "nodeType": "ParameterList", "parameters": [], "src": "2769:0:0"}, "scope": 2270, "src": "2669:101:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 2198, "nodeType": "StructuredDocumentation", "src": "2776:299:0", "text": " @dev Emitted when the validator has been added.\n @param publicKey The public key of a validator.\n @param operatorIds The operator ids list.\n @param shares snappy compressed shares(a set of encrypted and public shares).\n @param cluster All the cluster data."}, "eventSelector": "48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e5", "id": 2212, "name": "ValidatorAdded", "nameLocation": "3086:14:0", "nodeType": "EventDefinition", "parameters": {"id": 2211, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2200, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3117:5:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3101:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2199, "name": "address", "nodeType": "ElementaryTypeName", "src": "3101:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2203, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3133:11:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3124:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2201, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3124:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2202, "nodeType": "ArrayTypeName", "src": "3124:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2205, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "3152:9:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3146:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2204, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3146:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2207, "indexed": false, "mutability": "mutable", "name": "shares", "nameLocation": "3169:6:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3163:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2206, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3163:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2210, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3185:7:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3177:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2209, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2208, "name": "Cluster", "nameLocations": ["3177:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3177:7:0"}, "referencedDeclaration": 1906, "src": "3177:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3100:93:0"}, "src": "3080:114:0"}, {"anonymous": false, "documentation": {"id": 2213, "nodeType": "StructuredDocumentation", "src": "3200:210:0", "text": " @dev Emitted when the validator is removed.\n @param publicKey The public key of a validator.\n @param operatorIds The operator ids list.\n @param cluster All the cluster data."}, "eventSelector": "ccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e", "id": 2225, "name": "ValidatorRemoved", "nameLocation": "3421:16:0", "nodeType": "EventDefinition", "parameters": {"id": 2224, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2215, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3454:5:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3438:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2214, "name": "address", "nodeType": "ElementaryTypeName", "src": "3438:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2218, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3470:11:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3461:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2216, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3461:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2217, "nodeType": "ArrayTypeName", "src": "3461:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2220, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "3489:9:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3483:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2219, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3483:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2223, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3508:7:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3500:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2222, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2221, "name": "Cluster", "nameLocations": ["3500:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3500:7:0"}, "referencedDeclaration": 1906, "src": "3500:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3437:79:0"}, "src": "3415:102:0"}, {"anonymous": false, "eventSelector": "1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e688", "id": 2235, "name": "ClusterLiquidated", "nameLocation": "3529:17:0", "nodeType": "EventDefinition", "parameters": {"id": 2234, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2227, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3563:5:0", "nodeType": "VariableDeclaration", "scope": 2235, "src": "3547:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2226, "name": "address", "nodeType": "ElementaryTypeName", "src": "3547:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2230, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3579:11:0", "nodeType": "VariableDeclaration", "scope": 2235, "src": "3570:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2228, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3570:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2229, "nodeType": "ArrayTypeName", "src": "3570:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2233, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3600:7:0", "nodeType": "VariableDeclaration", "scope": 2235, "src": "3592:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2232, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2231, "name": "Cluster", "nameLocations": ["3592:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3592:7:0"}, "referencedDeclaration": 1906, "src": "3592:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3546:62:0"}, "src": "3523:86:0"}, {"anonymous": false, "eventSelector": "c803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b6859", "id": 2245, "name": "ClusterReactivated", "nameLocation": "3621:18:0", "nodeType": "EventDefinition", "parameters": {"id": 2244, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2237, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3656:5:0", "nodeType": "VariableDeclaration", "scope": 2245, "src": "3640:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2236, "name": "address", "nodeType": "ElementaryTypeName", "src": "3640:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2240, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3672:11:0", "nodeType": "VariableDeclaration", "scope": 2245, "src": "3663:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2238, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3663:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2239, "nodeType": "ArrayTypeName", "src": "3663:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2243, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3693:7:0", "nodeType": "VariableDeclaration", "scope": 2245, "src": "3685:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2242, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2241, "name": "Cluster", "nameLocations": ["3685:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3685:7:0"}, "referencedDeclaration": 1906, "src": "3685:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3639:62:0"}, "src": "3615:87:0"}, {"anonymous": false, "eventSelector": "39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0", "id": 2257, "name": "ClusterWithdrawn", "nameLocation": "3714:16:0", "nodeType": "EventDefinition", "parameters": {"id": 2256, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2247, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3747:5:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3731:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2246, "name": "address", "nodeType": "ElementaryTypeName", "src": "3731:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2250, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3763:11:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3754:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2248, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3754:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2249, "nodeType": "ArrayTypeName", "src": "3754:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2252, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3784:5:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3776:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2251, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3776:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2255, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3799:7:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3791:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2254, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2253, "name": "Cluster", "nameLocations": ["3791:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3791:7:0"}, "referencedDeclaration": 1906, "src": "3791:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3730:77:0"}, "src": "3708:100:0"}, {"anonymous": false, "eventSelector": "2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2", "id": 2269, "name": "ClusterDeposited", "nameLocation": "3820:16:0", "nodeType": "EventDefinition", "parameters": {"id": 2268, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2259, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3853:5:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3837:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2258, "name": "address", "nodeType": "ElementaryTypeName", "src": "3837:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2262, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3869:11:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3860:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2260, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3860:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2261, "nodeType": "ArrayTypeName", "src": "3860:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2264, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3890:5:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3882:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2263, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3882:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2267, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3905:7:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3897:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2266, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2265, "name": "Cluster", "nameLocations": ["3897:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3897:7:0"}, "referencedDeclaration": 1906, "src": "3897:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3836:77:0"}, "src": "3814:100:0"}], "scope": 2271, "src": "103:3813:0", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:3872:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [1967]}, "id": 1968, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1853, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 1967, "linearizedBaseContracts": [1967], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 1863, "members": [{"constant": false, "id": 1856, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 1863, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1855, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1859, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 1863, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1858, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1862, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 1863, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1861, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 1967, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 1880, "members": [{"constant": false, "id": 1866, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1865, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1869, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1868, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1872, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1871, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1875, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1874, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1879, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 1878, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1877, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 1863, "src": "1129:8:1"}, "referencedDeclaration": 1863, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 1967, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 1890, "members": [{"constant": false, "id": 1883, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 1890, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1882, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1886, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 1890, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1885, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1889, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 1890, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1888, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 1967, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 1906, "members": [{"constant": false, "id": 1893, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1892, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1896, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1895, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1899, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1898, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1902, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1901, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1905, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1904, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 1967, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 1908, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1907, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 1910, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1909, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 1912, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1911, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 1914, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1913, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 1916, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1915, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 1918, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1917, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 1920, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1919, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 1922, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1921, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 1924, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1923, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 1926, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1925, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 1928, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1927, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 1930, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1929, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 1932, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1931, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 1934, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1933, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 1936, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1935, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 1938, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1937, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 1940, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1939, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 1942, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1941, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 1944, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1943, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 1946, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1945, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 1948, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1947, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 1950, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1949, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 1952, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1951, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 1954, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1953, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 1956, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1955, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 1958, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1957, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 1960, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1959, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 1962, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1961, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 1964, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1963, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 1966, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1965, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 1968, "src": "70:3477:1", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ClusterLib.sol": {"AST": {"absolutePath": "contracts/libraries/ClusterLib.sol", "exportedSymbols": {"ClusterLib": [732], "Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVNetworkCore": [1967], "SSVModules": [1977], "SSVStorage": [2047], "StorageData": [2024], "Types256": [2114], "Types64": [2065]}, "id": 733, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 483, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 484, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 733, "sourceUnit": 1968, "src": "70:43:2", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 485, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 733, "sourceUnit": 2048, "src": "114:26:2", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 486, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 733, "sourceUnit": 2115, "src": "141:21:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ClusterLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 732, "linearizedBaseContracts": [732], "name": "ClusterLib", "nameLocation": "172:10:2", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 489, "libraryName": {"id": 487, "name": "Types64", "nameLocations": ["195:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2065, "src": "195:7:2"}, "nodeType": "UsingForDirective", "src": "189:25:2", "typeName": {"id": 488, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "207:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 544, "nodeType": "Block", "src": "375:306:2", "statements": [{"assignments": [500], "declarations": [{"constant": false, "id": 500, "mutability": "mutable", "name": "networkFee", "nameLocation": "392:10:2", "nodeType": "VariableDeclaration", "scope": 544, "src": "385:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 499, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "385:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 511, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 510, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 503, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 496, "src": "412:22:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 504, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "437:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 505, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "445:15:2", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "437:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "412:48:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 502, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "405:6:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 501, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "405:6:2", "typeDescriptions": {}}}, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "405:56:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 508, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "464:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 509, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "472:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "464:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "405:81:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "385:101:2"}, {"assignments": [513], "declarations": [{"constant": false, "id": 513, "mutability": "mutable", "name": "usage", "nameLocation": "503:5:2", "nodeType": "VariableDeclaration", "scope": 544, "src": "496:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 512, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "496:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 524, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 523, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 514, "name": "newIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 494, "src": "512:8:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 515, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "523:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 516, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "531:5:2", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "523:13:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "512:24:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 518, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "511:26:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 519, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "540:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 520, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "548:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "540:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "511:51:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 522, "name": "networkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 500, "src": "565:10:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "511:64:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "496:79:2"}, {"expression": {"id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 525, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "585:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "593:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "585:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 533, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 528, "name": "usage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 513, "src": "603:5:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "609:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "603:12:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 530, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "603:14:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 531, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "620:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 532, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "628:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "620:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "603:32:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 535, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "642:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "650:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "642:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 537, "name": "usage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 513, "src": "660:5:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "666:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "660:12:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 539, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "660:14:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "642:32:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "603:71:2", "trueExpression": {"hexValue": "30", "id": 534, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "638:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "585:89:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 543, "nodeType": "ExpressionStatement", "src": "585:89:2"}]}, "id": 545, "implemented": true, "kind": "function", "modifiers": [], "name": "updateBalance", "nameLocation": "229:13:2", "nodeType": "FunctionDefinition", "parameters": {"id": 497, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 492, "mutability": "mutable", "name": "cluster", "nameLocation": "283:7:2", "nodeType": "VariableDeclaration", "scope": 545, "src": "252:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 491, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 490, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["252:15:2", "268:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "252:23:2"}, "referencedDeclaration": 1906, "src": "252:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 494, "mutability": "mutable", "name": "newIndex", "nameLocation": "307:8:2", "nodeType": "VariableDeclaration", "scope": 545, "src": "300:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 493, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "300:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 496, "mutability": "mutable", "name": "currentNetworkFeeIndex", "nameLocation": "332:22:2", "nodeType": "VariableDeclaration", "scope": 545, "src": "325:29:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 495, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "325:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "242:118:2"}, "returnParameters": {"id": 498, "nodeType": "ParameterList", "parameters": [], "src": "375:0:2"}, "scope": 732, "src": "220:461:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 595, "nodeType": "Block", "src": "951:372:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 561, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "965:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 562, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "973:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "965:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 563, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "991:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "965:27:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 594, "nodeType": "IfStatement", "src": "961:356:2", "trueBody": {"id": 593, "nodeType": "Block", "src": "994:323:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 565, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "1012:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 566, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1020:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "1012:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 567, "name": "minimumLiquidationCollateral", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 556, "src": "1030:28:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1059:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "1030:35:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1030:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1012:55:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 573, "nodeType": "IfStatement", "src": "1008:72:2", "trueBody": {"expression": {"hexValue": "74727565", "id": 571, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1076:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 560, "id": 572, "nodeType": "Return", "src": "1069:11:2"}}, {"assignments": [575], "declarations": [{"constant": false, "id": 575, "mutability": "mutable", "name": "liquidationThreshold", "nameLocation": "1101:20:2", "nodeType": "VariableDeclaration", "scope": 593, "src": "1094:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 574, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1094:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 585, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 576, "name": "minimumBlocksBeforeLiquidation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 554, "src": "1124:30:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 577, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 550, "src": "1174:8:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 578, "name": "networkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 552, "src": "1185:10:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1174:21:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 580, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1173:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1124:72:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 582, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "1215:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 583, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1223:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "1215:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1124:113:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1094:143:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 586, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "1259:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 587, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1267:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "1259:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 588, "name": "liquidationThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 575, "src": "1277:20:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1298:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "1277:27:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1277:29:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1259:47:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 560, "id": 592, "nodeType": "Return", "src": "1252:54:2"}]}}]}, "id": 596, "implemented": true, "kind": "function", "modifiers": [], "name": "isLiquidatable", "nameLocation": "696:14:2", "nodeType": "FunctionDefinition", "parameters": {"id": 557, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 548, "mutability": "mutable", "name": "cluster", "nameLocation": "751:7:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "720:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 547, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 546, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["720:15:2", "736:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "720:23:2"}, "referencedDeclaration": 1906, "src": "720:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 550, "mutability": "mutable", "name": "burnRate", "nameLocation": "775:8:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "768:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 549, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "768:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 552, "mutability": "mutable", "name": "networkFee", "nameLocation": "800:10:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "793:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 551, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "793:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 554, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "827:30:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "820:37:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 553, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "820:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 556, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "874:28:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "867:35:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 555, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "867:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "710:198:2"}, "returnParameters": {"id": 560, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 559, "mutability": "mutable", "name": "liquidatable", "nameLocation": "937:12:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "932:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 558, "name": "bool", "nodeType": "ElementaryTypeName", "src": "932:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "931:19:2"}, "scope": 732, "src": "687:636:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 611, "nodeType": "Block", "src": "1423:82:2", "statements": [{"condition": {"id": 604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1437:15:2", "subExpression": {"expression": {"id": 602, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1438:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 603, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1446:6:2", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "1438:14:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 610, "nodeType": "IfStatement", "src": "1433:65:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 605, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1461:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1477:19:2", "memberName": "ClusterIsLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 1938, "src": "1461:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1461:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 609, "nodeType": "RevertStatement", "src": "1454:44:2"}}]}, "id": 612, "implemented": true, "kind": "function", "modifiers": [], "name": "validateClusterIsNotLiquidated", "nameLocation": "1338:30:2", "nodeType": "FunctionDefinition", "parameters": {"id": 600, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 599, "mutability": "mutable", "name": "cluster", "nameLocation": "1400:7:2", "nodeType": "VariableDeclaration", "scope": 612, "src": "1369:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 598, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 597, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["1369:15:2", "1385:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1369:23:2"}, "referencedDeclaration": 1906, "src": "1369:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1368:40:2"}, "returnParameters": {"id": 601, "nodeType": "ParameterList", "parameters": [], "src": "1423:0:2"}, "scope": 732, "src": "1329:176:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 676, "nodeType": "Block", "src": "1719:464:2", "statements": [{"assignments": [629], "declarations": [{"constant": false, "id": 629, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "1737:13:2", "nodeType": "VariableDeclaration", "scope": 676, "src": "1729:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 628, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1729:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 637, "initialValue": {"arguments": [{"arguments": [{"id": 633, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 617, "src": "1780:5:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 634, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 620, "src": "1787:11:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 631, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1763:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 632, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1767:12:2", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1763:16:2", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 635, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1763:36:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 630, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1753:9:2", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1753:47:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1729:71:2"}, {"assignments": [639], "declarations": [{"constant": false, "id": 639, "mutability": "mutable", "name": "hashedClusterData", "nameLocation": "1818:17:2", "nodeType": "VariableDeclaration", "scope": 676, "src": "1810:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 638, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1810:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 643, "initialValue": {"arguments": [{"id": 641, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 615, "src": "1854:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 640, "name": "hashClusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 731, "src": "1838:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1838:24:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1810:52:2"}, {"assignments": [645], "declarations": [{"constant": false, "id": 645, "mutability": "mutable", "name": "clusterData", "nameLocation": "1881:11:2", "nodeType": "VariableDeclaration", "scope": 676, "src": "1873:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 644, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1873:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 650, "initialValue": {"baseExpression": {"expression": {"id": 646, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 623, "src": "1895:1:2", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 647, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1897:8:2", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "1895:10:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 649, "indexExpression": {"id": 648, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "1906:13:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1895:25:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1873:47:2"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 651, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 645, "src": "1934:11:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1957:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 653, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1949:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 652, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1949:7:2", "typeDescriptions": {}}}, "id": 655, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1949:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1934:25:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 663, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 645, "src": "2041:11:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 664, "name": "hashedClusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 639, "src": "2056:17:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2041:32:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 672, "nodeType": "IfStatement", "src": "2037:109:2", "trueBody": {"id": 671, "nodeType": "Block", "src": "2075:71:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 666, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "2096:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2112:21:2", "memberName": "IncorrectClusterState", "nodeType": "MemberAccess", "referencedDeclaration": 1942, "src": "2096:37:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 669, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 670, "nodeType": "RevertStatement", "src": "2089:46:2"}]}}, "id": 673, "nodeType": "IfStatement", "src": "1930:216:2", "trueBody": {"id": 662, "nodeType": "Block", "src": "1961:70:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 657, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1982:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1998:20:2", "memberName": "ClusterDoesNotExists", "nodeType": "MemberAccess", "referencedDeclaration": 1940, "src": "1982:36:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1982:38:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 661, "nodeType": "RevertStatement", "src": "1975:45:2"}]}}, {"expression": {"id": 674, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "2163:13:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 627, "id": 675, "nodeType": "Return", "src": "2156:20:2"}]}, "id": 677, "implemented": true, "kind": "function", "modifiers": [], "name": "validateHashedCluster", "nameLocation": "1520:21:2", "nodeType": "FunctionDefinition", "parameters": {"id": 624, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 615, "mutability": "mutable", "name": "cluster", "nameLocation": "1582:7:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1551:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 614, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 613, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["1551:15:2", "1567:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1551:23:2"}, "referencedDeclaration": 1906, "src": "1551:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 617, "mutability": "mutable", "name": "owner", "nameLocation": "1607:5:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1599:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 616, "name": "address", "nodeType": "ElementaryTypeName", "src": "1599:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 620, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1638:11:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1622:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 618, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1622:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 619, "nodeType": "ArrayTypeName", "src": "1622:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 623, "mutability": "mutable", "name": "s", "nameLocation": "1679:1:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1659:21:2", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 622, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 621, "name": "StorageData", "nameLocations": ["1659:11:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "1659:11:2"}, "referencedDeclaration": 2024, "src": "1659:11:2", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1541:145:2"}, "returnParameters": {"id": 627, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 626, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 677, "src": "1710:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 625, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1710:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1709:9:2"}, "scope": 732, "src": "1511:672:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 705, "nodeType": "Block", "src": "2352:173:2", "statements": [{"expression": {"arguments": [{"id": 688, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 680, "src": "2376:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, {"id": 689, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 682, "src": "2385:12:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 690, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 684, "src": "2399:22:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 687, "name": "updateBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 545, "src": "2362:13:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 691, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2362:60:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 692, "nodeType": "ExpressionStatement", "src": "2362:60:2"}, {"expression": {"id": 697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 693, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 680, "src": "2432:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 695, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2440:5:2", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "2432:13:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 696, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 682, "src": "2448:12:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2432:28:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 698, "nodeType": "ExpressionStatement", "src": "2432:28:2"}, {"expression": {"id": 703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 699, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 680, "src": "2470:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 701, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2478:15:2", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "2470:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 702, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 684, "src": "2496:22:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2470:48:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 704, "nodeType": "ExpressionStatement", "src": "2470:48:2"}]}, "id": 706, "implemented": true, "kind": "function", "modifiers": [], "name": "updateClusterData", "nameLocation": "2198:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 685, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 680, "mutability": "mutable", "name": "cluster", "nameLocation": "2256:7:2", "nodeType": "VariableDeclaration", "scope": 706, "src": "2225:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 679, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 678, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["2225:15:2", "2241:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2225:23:2"}, "referencedDeclaration": 1906, "src": "2225:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 682, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "2280:12:2", "nodeType": "VariableDeclaration", "scope": 706, "src": "2273:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 681, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2273:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 684, "mutability": "mutable", "name": "currentNetworkFeeIndex", "nameLocation": "2309:22:2", "nodeType": "VariableDeclaration", "scope": 706, "src": "2302:29:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 683, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2302:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2215:122:2"}, "returnParameters": {"id": 686, "nodeType": "ParameterList", "parameters": [], "src": "2352:0:2"}, "scope": 732, "src": "2189:336:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 730, "nodeType": "Block", "src": "2628:308:2", "statements": [{"expression": {"arguments": [{"arguments": [{"expression": {"id": 717, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2722:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 718, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2730:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "2722:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"expression": {"id": 719, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2766:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 720, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2774:15:2", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "2766:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 721, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2811:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 722, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2819:5:2", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "2811:13:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 723, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2846:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 724, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2854:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "2846:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 725, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2883:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 726, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2891:6:2", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "2883:14:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "expression": {"id": 715, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2684:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 716, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2688:12:2", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2684:16:2", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2684:231:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 714, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2657:9:2", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 728, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2657:272:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 713, "id": 729, "nodeType": "Return", "src": "2638:291:2"}]}, "id": 731, "implemented": true, "kind": "function", "modifiers": [], "name": "hashClusterData", "nameLocation": "2540:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 710, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 709, "mutability": "mutable", "name": "cluster", "nameLocation": "2587:7:2", "nodeType": "VariableDeclaration", "scope": 731, "src": "2556:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 708, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 707, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["2556:15:2", "2572:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2556:23:2"}, "referencedDeclaration": 1906, "src": "2556:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2555:40:2"}, "returnParameters": {"id": 713, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 712, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 731, "src": "2619:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 711, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2619:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2618:9:2"}, "scope": 732, "src": "2531:405:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 733, "src": "164:2774:2", "usedErrors": []}], "src": "45:2894:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [2401], "Counters": [3029], "IERC20": [2955], "ISSVNetworkCore": [1967], "SSVModules": [1977], "SSVStorage": [2047], "StorageData": [2024]}, "id": 2402, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2272, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2273, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2402, "sourceUnit": 2048, "src": "70:26:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2401, "linearizedBaseContracts": [2401], "name": "CoreLib", "nameLocation": "106:7:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 2280, "name": "ModuleUpgraded", "nameLocation": "126:14:3", "nodeType": "EventDefinition", "parameters": {"id": 2279, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2276, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:3", "nodeType": "VariableDeclaration", "scope": 2280, "src": "141:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}, "typeName": {"id": 2275, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2274, "name": "SSVModules", "nameLocations": ["141:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1977, "src": "141:10:3"}, "referencedDeclaration": 1977, "src": "141:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2278, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:3", "nodeType": "VariableDeclaration", "scope": 2280, "src": "170:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2277, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:3"}, "src": "120:73:3"}, {"body": {"id": 2287, "nodeType": "Block", "src": "259:36:3", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 2285, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 2284, "id": 2286, "nodeType": "Return", "src": "269:19:3"}]}, "id": 2288, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2281, "nodeType": "ParameterList", "parameters": [], "src": "218:2:3"}, "returnParameters": {"id": 2284, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2283, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2288, "src": "244:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2282, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:3"}, "scope": 2401, "src": "199:96:3", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2311, "nodeType": "Block", "src": "363:136:3", "statements": [{"condition": {"id": 2303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:3", "subExpression": {"arguments": [{"id": 2300, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2290, "src": "411:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2301, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2292, "src": "415:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2295, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "378:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 2296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "378:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2297, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2298, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2019, "src": "378:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}}, "id": 2299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:3", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2922, "src": "378:32:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 2302, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2310, "nodeType": "IfStatement", "src": "373:120:3", "trueBody": {"id": 2309, "nodeType": "Block", "src": "424:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2304, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "445:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "445:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2308, "nodeType": "RevertStatement", "src": "438:44:3"}]}}]}, "id": 2312, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2293, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2290, "mutability": "mutable", "name": "to", "nameLocation": "334:2:3", "nodeType": "VariableDeclaration", "scope": 2312, "src": "326:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2289, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2292, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:3", "nodeType": "VariableDeclaration", "scope": 2312, "src": "338:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2291, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:3"}, "returnParameters": {"id": 2294, "nodeType": "ParameterList", "parameters": [], "src": "363:0:3"}, "scope": 2401, "src": "301:198:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2338, "nodeType": "Block", "src": "547:163:3", "statements": [{"condition": {"id": 2330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:3", "subExpression": {"arguments": [{"expression": {"id": 2322, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 2326, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:3", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$2401", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$2401", "typeString": "library CoreLib"}], "id": 2325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2324, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:3", "typeDescriptions": {}}}, "id": 2327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2328, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2314, "src": "626:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2317, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "562:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 2318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "562:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2319, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2320, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2019, "src": "562:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}}, "id": 2321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:3", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2954, "src": "562:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 2329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2337, "nodeType": "IfStatement", "src": "557:147:3", "trueBody": {"id": 2336, "nodeType": "Block", "src": "635:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2331, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "656:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "656:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2334, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2335, "nodeType": "RevertStatement", "src": "649:44:3"}]}}]}, "id": 2339, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2315, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2314, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:3", "nodeType": "VariableDeclaration", "scope": 2339, "src": "522:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2313, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:3"}, "returnParameters": {"id": 2316, "nodeType": "ParameterList", "parameters": [], "src": "547:0:3"}, "scope": 2401, "src": "505:205:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2365, "nodeType": "Block", "src": "1352:440:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2347, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2342, "src": "1366:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 2349, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2348, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:3", "typeDescriptions": {}}}, "id": 2351, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2356, "nodeType": "IfStatement", "src": "1362:64:3", "trueBody": {"id": 2355, "nodeType": "Block", "src": "1389:37:3", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2353, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2346, "id": 2354, "nodeType": "Return", "src": "1403:12:3"}]}}, {"assignments": [2358], "declarations": [{"constant": false, "id": 2358, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:3", "nodeType": "VariableDeclaration", "scope": 2365, "src": "1622:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2357, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2359, "nodeType": "VariableDeclarationStatement", "src": "1622:12:3"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:3", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:3", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:3"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:3"}, "nodeType": "YulFunctionCall", "src": "1731:20:3"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:3"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2342, "isOffset": false, "isSlot": false, "src": "1743:7:3", "valueSize": 1}, {"declaration": 2358, "isOffset": false, "isSlot": false, "src": "1723:4:3", "valueSize": 1}], "id": 2360, "nodeType": "InlineAssembly", "src": "1700:61:3"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2361, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2358, "src": "1777:4:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2346, "id": 2364, "nodeType": "Return", "src": "1770:15:3"}]}, "documentation": {"id": 2340, "nodeType": "StructuredDocumentation", "src": "716:565:3", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 2366, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2343, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2342, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:3", "nodeType": "VariableDeclaration", "scope": 2366, "src": "1306:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2341, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:3"}, "returnParameters": {"id": 2346, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2345, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2366, "src": "1346:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2344, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:3"}, "scope": 2401, "src": "1286:506:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2399, "nodeType": "Block", "src": "1879:219:3", "statements": [{"condition": {"id": 2377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:3", "subExpression": {"arguments": [{"id": 2375, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "1905:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2374, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2366, "src": "1894:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2383, "nodeType": "IfStatement", "src": "1889:81:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2378, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1928:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:3", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1962, "src": "1928:40:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2382, "nodeType": "RevertStatement", "src": "1921:49:3"}}, {"expression": {"id": 2392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2384, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "1981:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 2386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "1981:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2387, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2388, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:3", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1998, "src": "1981:30:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1977_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 2390, "indexExpression": {"id": 2389, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2369, "src": "2012:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2391, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "2024:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2393, "nodeType": "ExpressionStatement", "src": "1981:56:3"}, {"eventCall": {"arguments": [{"id": 2395, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2369, "src": "2067:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, {"id": 2396, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "2077:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2394, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2280, "src": "2052:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$1977_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 2397, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2398, "nodeType": "EmitStatement", "src": "2047:44:3"}]}, "id": 2400, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2372, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2369, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:3", "nodeType": "VariableDeclaration", "scope": 2400, "src": "1826:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}, "typeName": {"id": 2368, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2367, "name": "SSVModules", "nameLocations": ["1826:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1977, "src": "1826:10:3"}, "referencedDeclaration": 1977, "src": "1826:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2371, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:3", "nodeType": "VariableDeclaration", "scope": 2400, "src": "1847:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2370, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:3"}, "returnParameters": {"id": 2373, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:3"}, "scope": 2401, "src": "1799:299:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2402, "src": "98:2002:3", "usedErrors": []}], "src": "45:2056:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol": {"AST": {"absolutePath": "contracts/libraries/OperatorLib.sol", "exportedSymbols": {"Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVNetworkCore": [1967], "OperatorLib": [2644], "SSVModules": [1977], "SSVStorage": [2047], "SSVStorageProtocol": [2877], "StorageData": [2024], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 2645, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2403, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2404, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 1968, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2405, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 2048, "src": "114:26:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2406, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 2878, "src": "141:34:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2407, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 2115, "src": "176:21:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "OperatorLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2644, "linearizedBaseContracts": [2644], "name": "OperatorLib", "nameLocation": "207:11:4", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2410, "libraryName": {"id": 2408, "name": "Types64", "nameLocations": ["231:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2065, "src": "231:7:4"}, "nodeType": "UsingForDirective", "src": "225:25:4", "typeName": {"id": 2409, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "243:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 2463, "nodeType": "Block", "src": "336:285:4", "statements": [{"assignments": [2417], "declarations": [{"constant": false, "id": 2417, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "353:12:4", "nodeType": "VariableDeclaration", "scope": 2463, "src": "346:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2416, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "346:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2431, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2420, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "376:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "382:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "376:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2419, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "369:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2418, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "369:6:4", "typeDescriptions": {}}}, "id": 2422, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "369:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2423, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "392:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "401:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "392:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2425, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "410:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "392:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "369:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2427, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "368:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2428, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "419:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2429, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "428:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "419:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "368:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "346:85:4"}, {"expression": {"id": 2438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2432, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "442:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2435, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "451:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "442:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2436, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "460:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "442:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2437, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2417, "src": "469:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "442:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2439, "nodeType": "ExpressionStatement", "src": "442:39:4"}, {"expression": {"id": 2449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2440, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "491:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2443, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "500:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "491:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2444, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "509:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1862, "src": "491:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2448, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2445, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2417, "src": "520:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2446, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "535:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2447, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "544:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "535:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "520:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "491:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2450, "nodeType": "ExpressionStatement", "src": "491:67:4"}, {"expression": {"id": 2461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2451, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "568:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "577:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "568:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2455, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "586:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "568:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2458, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "601:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "607:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "601:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2457, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "594:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2456, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "594:6:4", "typeDescriptions": {}}}, "id": 2460, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "594:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "568:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2462, "nodeType": "ExpressionStatement", "src": "568:46:4"}]}, "id": 2464, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshot", "nameLocation": "265:14:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2414, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2413, "mutability": "mutable", "name": "operator", "nameLocation": "312:8:4", "nodeType": "VariableDeclaration", "scope": 2464, "src": "280:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2412, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2411, "name": "ISSVNetworkCore.Operator", "nameLocations": ["280:15:4", "296:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "280:24:4"}, "referencedDeclaration": 1880, "src": "280:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "279:42:4"}, "returnParameters": {"id": 2415, "nodeType": "ParameterList", "parameters": [], "src": "336:0:4"}, "scope": 2644, "src": "256:365:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2517, "nodeType": "Block", "src": "705:285:4", "statements": [{"assignments": [2471], "declarations": [{"constant": false, "id": 2471, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "722:12:4", "nodeType": "VariableDeclaration", "scope": 2517, "src": "715:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2470, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "715:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2485, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2474, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "745:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "751:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "745:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2473, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "738:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2472, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "738:6:4", "typeDescriptions": {}}}, "id": 2476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "738:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2477, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "761:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2478, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "770:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "761:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2479, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "779:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "761:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "738:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2481, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "737:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2482, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "788:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2483, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "797:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "788:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "715:85:4"}, {"expression": {"id": 2492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2486, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "811:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2489, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "820:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "811:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2490, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "829:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "811:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2491, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2471, "src": "838:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "811:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2493, "nodeType": "ExpressionStatement", "src": "811:39:4"}, {"expression": {"id": 2503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2494, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "860:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2497, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "869:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "860:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2498, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "878:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1862, "src": "860:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2499, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2471, "src": "889:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2500, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "904:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "904:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "889:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "860:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2504, "nodeType": "ExpressionStatement", "src": "860:67:4"}, {"expression": {"id": 2515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2505, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "937:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2508, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "946:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "937:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2509, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "955:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "937:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2512, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "970:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "976:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "970:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2511, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "963:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2510, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "963:6:4", "typeDescriptions": {}}}, "id": 2514, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "937:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2516, "nodeType": "ExpressionStatement", "src": "937:46:4"}]}, "id": 2518, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshotSt", "nameLocation": "636:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2468, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2467, "mutability": "mutable", "name": "operator", "nameLocation": "686:8:4", "nodeType": "VariableDeclaration", "scope": 2518, "src": "653:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2466, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2465, "name": "ISSVNetworkCore.Operator", "nameLocations": ["653:15:4", "669:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "653:24:4"}, "referencedDeclaration": 1880, "src": "653:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "652:43:4"}, "returnParameters": {"id": 2469, "nodeType": "ParameterList", "parameters": [], "src": "705:0:4"}, "scope": 2644, "src": "627:363:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2546, "nodeType": "Block", "src": "1072:179:4", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2524, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "1086:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1095:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "1086:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1104:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "1086:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1113:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2534, "nodeType": "IfStatement", "src": "1082:79:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2529, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1123:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1139:20:4", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1920, "src": "1123:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2532, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1123:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2533, "nodeType": "RevertStatement", "src": "1116:45:4"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2535, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "1175:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1184:5:4", "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 1872, "src": "1175:14:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 2537, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1193:3:4", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1197:6:4", "memberName": "sender", "nodeType": "MemberAccess", "src": "1193:10:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1175:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2545, "nodeType": "IfStatement", "src": "1171:73:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2540, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1212:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1228:14:4", "memberName": "CallerNotOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1908, "src": "1212:30:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2543, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:32:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2544, "nodeType": "RevertStatement", "src": "1205:39:4"}}]}, "id": 2547, "implemented": true, "kind": "function", "modifiers": [], "name": "checkOwner", "nameLocation": "1005:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2522, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2521, "mutability": "mutable", "name": "operator", "nameLocation": "1048:8:4", "nodeType": "VariableDeclaration", "scope": 2547, "src": "1016:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2520, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2519, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1016:15:4", "1032:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "1016:24:4"}, "referencedDeclaration": 1880, "src": "1016:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "1015:42:4"}, "returnParameters": {"id": 2523, "nodeType": "ParameterList", "parameters": [], "src": "1072:0:4"}, "scope": 2644, "src": "996:255:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2642, "nodeType": "Block", "src": "1485:831:4", "statements": [{"body": {"id": 2640, "nodeType": "Block", "src": "1537:773:4", "statements": [{"assignments": [2572], "declarations": [{"constant": false, "id": 2572, "mutability": "mutable", "name": "operatorId", "nameLocation": "1558:10:4", "nodeType": "VariableDeclaration", "scope": 2640, "src": "1551:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2571, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1551:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2576, "initialValue": {"baseExpression": {"id": 2573, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2550, "src": "1571:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2575, "indexExpression": {"id": 2574, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "1583:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1571:14:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1551:34:4"}, {"assignments": [2581], "declarations": [{"constant": false, "id": 2581, "mutability": "mutable", "name": "operator", "nameLocation": "1632:8:4", "nodeType": "VariableDeclaration", "scope": 2640, "src": "1599:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2580, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2579, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1599:15:4", "1615:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "1599:24:4"}, "referencedDeclaration": 1880, "src": "1599:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 2586, "initialValue": {"baseExpression": {"expression": {"id": 2582, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2557, "src": "1643:1:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2583, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1645:9:4", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "1643:11:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 2585, "indexExpression": {"id": 2584, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2572, "src": "1655:10:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1643:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1599:67:4"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2587, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1684:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2588, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1693:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "1684:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2589, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1702:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "1684:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2590, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1711:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1684:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2629, "nodeType": "IfStatement", "src": "1680:507:4", "trueBody": {"id": 2628, "nodeType": "Block", "src": "1714:473:4", "statements": [{"expression": {"arguments": [{"id": 2593, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1749:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}], "id": 2592, "name": "updateSnapshotSt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2518, "src": "1732:16:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Operator_$1880_storage_ptr_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 2594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1732:26:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2595, "nodeType": "ExpressionStatement", "src": "1732:26:4"}, {"condition": {"id": 2597, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1780:23:4", "subExpression": {"id": 2596, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2552, "src": "1781:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2605, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1924:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2606, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1933:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "1924:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2607, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2554, "src": "1951:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1924:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2609, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1923:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2610, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "1974:18:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 2611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1993:4:4", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "1974:23:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 2612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1974:25:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2613, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2000:26:4", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 2826, "src": "1974:52:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1923:103:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2621, "nodeType": "IfStatement", "src": "1898:233:4", "trueBody": {"id": 2620, "nodeType": "Block", "src": "2045:86:4", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2615, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "2074:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2090:20:4", "memberName": "ExceedValidatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1948, "src": "2074:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2618, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2074:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2619, "nodeType": "RevertStatement", "src": "2067:45:4"}]}}, "id": 2622, "nodeType": "IfStatement", "src": "1776:355:4", "trueBody": {"id": 2604, "nodeType": "Block", "src": "1805:87:4", "statements": [{"expression": {"id": 2602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2598, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1827:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1836:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "1827:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2601, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2554, "src": "1854:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1827:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2603, "nodeType": "ExpressionStatement", "src": "1827:46:4"}]}}, {"expression": {"id": 2626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2623, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2562, "src": "2148:8:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 2624, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "2160:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2625, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2169:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "2160:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2148:24:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2627, "nodeType": "ExpressionStatement", "src": "2148:24:4"}]}}, {"expression": {"id": 2634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2630, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2560, "src": "2201:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 2631, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "2217:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2632, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2226:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "2217:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2633, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2235:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "2217:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2201:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2635, "nodeType": "ExpressionStatement", "src": "2201:39:4"}, {"id": 2639, "nodeType": "UncheckedBlock", "src": "2254:46:4", "statements": [{"expression": {"id": 2637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "2282:3:4", "subExpression": {"id": 2636, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "2284:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2638, "nodeType": "ExpressionStatement", "src": "2282:3:4"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2567, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "1511:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 2568, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2550, "src": "1515:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1527:6:4", "memberName": "length", "nodeType": "MemberAccess", "src": "1515:18:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1511:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2641, "initializationExpression": {"assignments": [2565], "declarations": [{"constant": false, "id": 2565, "mutability": "mutable", "name": "i", "nameLocation": "1508:1:4", "nodeType": "VariableDeclaration", "scope": 2641, "src": "1500:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2564, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1500:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2566, "nodeType": "VariableDeclarationStatement", "src": "1500:9:4"}, "nodeType": "ForStatement", "src": "1495:815:4"}]}, "id": 2643, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperators", "nameLocation": "1266:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2550, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1307:11:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1291:27:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2548, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1291:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2549, "nodeType": "ArrayTypeName", "src": "1291:8:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2552, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1333:22:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1328:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2551, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1328:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2554, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1372:19:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1365:26:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2553, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1365:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2557, "mutability": "mutable", "name": "s", "nameLocation": "1421:1:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1401:21:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2556, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2555, "name": "StorageData", "nameLocations": ["1401:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "1401:11:4"}, "referencedDeclaration": 2024, "src": "1401:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1281:147:4"}, "returnParameters": {"id": 2563, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2560, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "1454:12:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1447:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2559, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1447:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2562, "mutability": "mutable", "name": "burnRate", "nameLocation": "1475:8:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1468:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2561, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1468:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1446:38:4"}, "scope": 2644, "src": "1257:1059:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2645, "src": "199:2119:4", "usedErrors": []}], "src": "45:2274:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [2052], "ISSVNetworkCore": [1967], "ProtocolLib": [2812], "SSVStorageProtocol": [2877], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 2813, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2646, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2647, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2813, "sourceUnit": 1968, "src": "70:43:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2648, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2813, "sourceUnit": 2115, "src": "114:21:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2649, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2813, "sourceUnit": 2878, "src": "136:34:5", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2812, "linearizedBaseContracts": [2812], "name": "ProtocolLib", "nameLocation": "180:11:5", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2652, "libraryName": {"id": 2650, "name": "Types256", "nameLocations": ["204:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2114, "src": "204:8:5"}, "nodeType": "UsingForDirective", "src": "198:27:5", "typeName": {"id": 2651, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 2675, "nodeType": "Block", "src": "433:113:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2660, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2655, "src": "450:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2832, "src": "450:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2664, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 2666, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2655, "src": "493:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2667, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2817, "src": "493:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2663, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2662, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:5", "typeDescriptions": {}}}, "id": 2669, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2670, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2655, "src": "526:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "526:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2659, "id": 2674, "nodeType": "Return", "src": "443:96:5"}]}, "id": 2676, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2656, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2655, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:5", "nodeType": "VariableDeclaration", "scope": 2676, "src": "374:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2654, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2653, "name": "StorageProtocol", "nameLocations": ["374:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "374:15:5"}, "referencedDeclaration": 2854, "src": "374:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:5"}, "returnParameters": {"id": 2659, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2658, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2676, "src": "425:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2657, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:5"}, "scope": 2812, "src": "342:204:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2714, "nodeType": "Block", "src": "628:196:5", "statements": [{"expression": {"arguments": [{"id": 2685, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "656:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2684, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2740, "src": "638:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 2686, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2687, "nodeType": "ExpressionStatement", "src": "638:21:5"}, {"expression": {"id": 2694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2688, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "670:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2690, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2832, "src": "670:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 2692, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "714:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2691, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2676, "src": "691:22:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 2693, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2695, "nodeType": "ExpressionStatement", "src": "670:47:5"}, {"expression": {"id": 2704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2696, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "727:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2698, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2817, "src": "727:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2701, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2702, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2700, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2699, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:5", "typeDescriptions": {}}}, "id": 2703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2705, "nodeType": "ExpressionStatement", "src": "727:52:5"}, {"expression": {"id": 2712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2706, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "789:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2708, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "789:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2709, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2681, "src": "805:3:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2710, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:5", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2094, "src": "805:10:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 2711, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2713, "nodeType": "ExpressionStatement", "src": "789:28:5"}]}, "id": 2715, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2682, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2679, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:5", "nodeType": "VariableDeclaration", "scope": 2715, "src": "578:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2678, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2677, "name": "StorageProtocol", "nameLocations": ["578:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "578:15:5"}, "referencedDeclaration": 2854, "src": "578:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 2681, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:5", "nodeType": "VariableDeclaration", "scope": 2715, "src": "606:11:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:5"}, "returnParameters": {"id": 2683, "nodeType": "ParameterList", "parameters": [], "src": "628:0:5"}, "scope": 2812, "src": "552:272:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2739, "nodeType": "Block", "src": "993:112:5", "statements": [{"expression": {"id": 2727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2721, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2718, "src": "1003:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2723, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2835, "src": "1003:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 2725, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2718, "src": "1040:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2724, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2768, "src": "1019:20:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 2726, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2728, "nodeType": "ExpressionStatement", "src": "1003:40:5"}, {"expression": {"id": 2737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2729, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2718, "src": "1053:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2731, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2823, "src": "1053:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2734, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2733, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2732, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:5", "typeDescriptions": {}}}, "id": 2736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2738, "nodeType": "ExpressionStatement", "src": "1053:45:5"}]}, "id": 2740, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2719, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2718, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:5", "nodeType": "VariableDeclaration", "scope": 2740, "src": "956:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2717, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2716, "name": "StorageProtocol", "nameLocations": ["956:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "956:15:5"}, "referencedDeclaration": 2854, "src": "956:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:5"}, "returnParameters": {"id": 2720, "nodeType": "ParameterList", "parameters": [], "src": "993:0:5"}, "scope": 2812, "src": "929:176:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2767, "nodeType": "Block", "src": "1200:126:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2765, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2748, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1217:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2749, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2835, "src": "1217:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2764, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2752, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2751, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2750, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:5", "typeDescriptions": {}}}, "id": 2754, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 2755, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1257:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2756, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2823, "src": "1257:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 2758, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2759, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1283:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2760, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "1283:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2762, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1299:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2763, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2820, "src": "1299:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2747, "id": 2766, "nodeType": "Return", "src": "1210:109:5"}]}, "id": 2768, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2744, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2743, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:5", "nodeType": "VariableDeclaration", "scope": 2768, "src": "1141:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2742, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2741, "name": "StorageProtocol", "nameLocations": ["1141:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "1141:15:5"}, "referencedDeclaration": 2854, "src": "1141:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:5"}, "returnParameters": {"id": 2747, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2746, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2768, "src": "1192:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2745, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:5"}, "scope": 2812, "src": "1111:215:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2810, "nodeType": "Block", "src": "1445:286:5", "statements": [{"expression": {"arguments": [{"id": 2779, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2771, "src": "1473:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2778, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2740, "src": "1455:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 2780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2781, "nodeType": "ExpressionStatement", "src": "1455:21:5"}, {"condition": {"id": 2783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:5", "subExpression": {"id": 2782, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2773, "src": "1491:22:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2791, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2771, "src": "1594:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2792, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2820, "src": "1594:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2793, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2775, "src": "1618:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2795, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 2798, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2797, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:5", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 2796, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:5", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2799, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 2800, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:5", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2808, "nodeType": "IfStatement", "src": "1589:136:5", "trueBody": {"id": 2807, "nodeType": "Block", "src": "1659:66:5", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2802, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1680:15:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:5", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 1964, "src": "1680:32:5", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2805, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2806, "nodeType": "RevertStatement", "src": "1673:41:5"}]}}, "id": 2809, "nodeType": "IfStatement", "src": "1486:239:5", "trueBody": {"id": 2790, "nodeType": "Block", "src": "1515:68:5", "statements": [{"expression": {"id": 2788, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2784, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2771, "src": "1529:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2786, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2820, "src": "1529:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2787, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2775, "src": "1553:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2789, "nodeType": "ExpressionStatement", "src": "1529:43:5"}]}}]}, "id": 2811, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2776, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2771, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:5", "nodeType": "VariableDeclaration", "scope": 2811, "src": "1351:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2770, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2769, "name": "StorageProtocol", "nameLocations": ["1351:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "1351:15:5"}, "referencedDeclaration": 2854, "src": "1351:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 2773, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:5", "nodeType": "VariableDeclaration", "scope": 2811, "src": "1379:27:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2772, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2775, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:5", "nodeType": "VariableDeclaration", "scope": 2811, "src": "1408:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2774, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:5"}, "returnParameters": {"id": 2777, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:5"}, "scope": 2812, "src": "1332:399:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2813, "src": "172:1561:5", "usedErrors": []}], "src": "45:1689:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [3029], "IERC20": [2955], "ISSVNetworkCore": [1967], "SSVModules": [1977], "SSVStorage": [2047], "StorageData": [2024]}, "id": 2048, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1969, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 1970, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2048, "sourceUnit": 1968, "src": "70:43:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 1971, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2048, "sourceUnit": 3030, "src": "114:52:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1972, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2048, "sourceUnit": 2956, "src": "167:56:6", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 1977, "members": [{"id": 1973, "name": "SSV_OPERATORS", "nameLocation": "247:13:6", "nodeType": "EnumValue", "src": "247:13:6"}, {"id": 1974, "name": "SSV_CLUSTERS", "nameLocation": "266:12:6", "nodeType": "EnumValue", "src": "266:12:6"}, {"id": 1975, "name": "SSV_DAO", "nameLocation": "284:7:6", "nodeType": "EnumValue", "src": "284:7:6"}, {"id": 1976, "name": "SSV_VIEWS", "nameLocation": "297:9:6", "nodeType": "EnumValue", "src": "297:9:6"}], "name": "SSVModules", "nameLocation": "230:10:6", "nodeType": "EnumDefinition", "src": "225:83:6"}, {"canonicalName": "StorageData", "id": 2024, "members": [{"constant": false, "id": 1982, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "599:40:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1981, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1979, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1980, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1987, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "756:36:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1986, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1984, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1985, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1992, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "870:39:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 1991, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1989, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1990, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 1998, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "998:43:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1977_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 1997, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1995, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1994, "name": "SSVModules", "nameLocations": ["1006:10:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1977, "src": "1006:10:6"}, "referencedDeclaration": 1977, "src": "1006:10:6", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1977_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1996, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2003, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1159:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 2002, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2000, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2001, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2009, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1304:85:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1890_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 2008, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2005, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1890_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2007, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2006, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:6", "1338:24:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1890, "src": "1322:40:6"}, "referencedDeclaration": 1890, "src": "1322:40:6", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1890_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 2015, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1470:53:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 2014, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2011, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2013, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2012, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:6", "1504:8:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "1488:24:6"}, "referencedDeclaration": 1880, "src": "1488:24:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 2019, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1599:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}, "typeName": {"id": 2018, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2017, "name": "IERC20", "nameLocations": ["1599:6:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2955, "src": "1599:6:6"}, "referencedDeclaration": 2955, "src": "1599:6:6", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 2023, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1686:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2022, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2021, "name": "Counters.Counter", "nameLocations": ["1686:8:6", "1695:7:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "1686:16:6"}, "referencedDeclaration": 2961, "src": "1686:16:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:6", "nodeType": "StructDefinition", "scope": 2048, "src": "419:1301:6", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2047, "linearizedBaseContracts": [2047], "name": "SSVStorage", "nameLocation": "1730:10:6", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2034, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:6", "nodeType": "VariableDeclaration", "scope": 2047, "src": "1747:98:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2025, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2033, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 2029, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 2028, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:6", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2030, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2027, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:6", "typeDescriptions": {}}}, "id": 2031, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2032, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2045, "nodeType": "Block", "src": "1915:117:6", "statements": [{"assignments": [2041], "declarations": [{"constant": false, "id": 2041, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:6", "nodeType": "VariableDeclaration", "scope": 2045, "src": "1925:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2040, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2043, "initialValue": {"id": 2042, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2034, "src": "1944:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:6"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:6", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:6", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:6"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:6"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2041, "isOffset": false, "isSlot": false, "src": "2008:8:6", "valueSize": 1}, {"declaration": 2038, "isOffset": false, "isSlot": true, "src": "1997:7:6", "suffix": "slot", "valueSize": 1}], "id": 2044, "nodeType": "InlineAssembly", "src": "1974:52:6"}]}, "id": 2046, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 2035, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:6"}, "returnParameters": {"id": 2039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2038, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:6", "nodeType": "VariableDeclaration", "scope": 2046, "src": "1891:22:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2037, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2036, "name": "StorageData", "nameLocations": ["1891:11:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "1891:11:6"}, "referencedDeclaration": 2024, "src": "1891:11:6", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:6"}, "scope": 2047, "src": "1852:180:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2048, "src": "1722:312:6", "usedErrors": []}], "src": "45:1990:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [2877], "StorageProtocol": [2854]}, "id": 2878, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2814, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"canonicalName": "StorageProtocol", "id": 2854, "members": [{"constant": false, "id": 2817, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "307:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2816, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2820, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "406:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2819, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2823, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "505:26:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2822, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2826, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "598:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2825, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2829, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "683:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2828, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2832, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "758:22:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2831, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2835, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "833:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2834, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2838, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "945:37:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2837, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2841, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1052:35:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2840, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2844, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1166:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2843, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2847, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1278:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2846, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2850, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1397:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2849, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2853, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1504:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2852, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:7", "nodeType": "StructDefinition", "scope": 2878, "src": "201:1327:7", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2877, "linearizedBaseContracts": [2877], "name": "SSVStorageProtocol", "nameLocation": "1538:18:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2864, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:7", "nodeType": "VariableDeclaration", "scope": 2877, "src": "1563:102:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2855, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2863, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 2859, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 2858, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:7", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2860, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2857, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:7", "typeDescriptions": {}}}, "id": 2861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2862, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2875, "nodeType": "Block", "src": "1739:117:7", "statements": [{"assignments": [2871], "declarations": [{"constant": false, "id": 2871, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:7", "nodeType": "VariableDeclaration", "scope": 2875, "src": "1749:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2870, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2873, "initialValue": {"id": 2872, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2864, "src": "1768:20:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:7"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:7", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:7", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:7"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:7"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2871, "isOffset": false, "isSlot": false, "src": "1832:8:7", "valueSize": 1}, {"declaration": 2868, "isOffset": false, "isSlot": true, "src": "1821:7:7", "suffix": "slot", "valueSize": 1}], "id": 2874, "nodeType": "InlineAssembly", "src": "1798:52:7"}]}, "id": 2876, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:7", "nodeType": "FunctionDefinition", "parameters": {"id": 2865, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:7"}, "returnParameters": {"id": 2869, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2868, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:7", "nodeType": "VariableDeclaration", "scope": 2876, "src": "1711:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2867, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2866, "name": "StorageProtocol", "nameLocations": ["1711:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "1711:15:7"}, "referencedDeclaration": 2854, "src": "1711:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:7"}, "scope": 2877, "src": "1672:184:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2878, "src": "1530:328:7", "usedErrors": []}], "src": "45:1814:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [2052], "Types256": [2114], "Types64": [2065]}, "id": 2115, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2049, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"constant": true, "id": 2052, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:8", "nodeType": "VariableDeclaration", "scope": 2115, "src": "70:45:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2050, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 2051, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:8", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2065, "linearizedBaseContracts": [2065], "name": "Types64", "nameLocation": "126:7:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2063, "nodeType": "Block", "src": "202:47:8", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2059, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2054, "src": "219:5:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2060, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "227:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2058, "id": 2062, "nodeType": "Return", "src": "212:30:8"}]}, "id": 2064, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2055, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2054, "mutability": "mutable", "name": "value", "nameLocation": "163:5:8", "nodeType": "VariableDeclaration", "scope": 2064, "src": "156:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2053, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:8"}, "returnParameters": {"id": 2058, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2057, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2064, "src": "193:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2056, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:8"}, "scope": 2065, "src": "140:109:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2115, "src": "118:133:8", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2114, "linearizedBaseContracts": [2114], "name": "Types256", "nameLocation": "261:8:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2093, "nodeType": "Block", "src": "338:144:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2073, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2067, "src": "356:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2078, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 2076, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 2075, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:8", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2077, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "376:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2079, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 2081, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 2072, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2082, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2083, "nodeType": "ExpressionStatement", "src": "348:67:8"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2087, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2067, "src": "450:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2086, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2113, "src": "439:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 2088, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2089, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "459:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2085, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2084, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:8", "typeDescriptions": {}}}, "id": 2091, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2071, "id": 2092, "nodeType": "Return", "src": "425:50:8"}]}, "id": 2094, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2068, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2067, "mutability": "mutable", "name": "value", "nameLocation": "300:5:8", "nodeType": "VariableDeclaration", "scope": 2094, "src": "292:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2066, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:8"}, "returnParameters": {"id": 2071, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2070, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2094, "src": "330:6:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2069, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:8"}, "scope": 2114, "src": "276:206:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2112, "nodeType": "Block", "src": "555:102:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2102, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2096, "src": "573:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 2103, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "581:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2105, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 2107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 2101, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2109, "nodeType": "ExpressionStatement", "src": "565:63:8"}, {"expression": {"id": 2110, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2096, "src": "645:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2100, "id": 2111, "nodeType": "Return", "src": "638:12:8"}]}, "id": 2113, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2097, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2096, "mutability": "mutable", "name": "value", "nameLocation": "516:5:8", "nodeType": "VariableDeclaration", "scope": 2113, "src": "508:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2095, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:8"}, "returnParameters": {"id": 2100, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2099, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2113, "src": "546:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2098, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:8"}, "scope": 2114, "src": "488:169:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2115, "src": "253:406:8", "usedErrors": []}], "src": "45:615:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Clusters.sol": {"AST": {"absolutePath": "contracts/modules/Clusters.sol", "exportedSymbols": {"ClusterLib": [732], "Clusters": [481], "CoreLib": [2401], "Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVClusters": [2270], "ISSVNetworkCore": [1967], "OperatorLib": [2644], "ProtocolLib": [2812], "SSVClusters": [1851], "SSVModules": [1977], "SSVStorage": [2047], "SSVStorageProtocol": [2877], "StorageData": [2024], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 482, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:9"}, {"absolutePath": "contracts/modules/SSVClusters.sol", "file": "./SSVClusters.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 482, "sourceUnit": 1852, "src": "70:27:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ClusterLib.sol", "file": "../libraries/ClusterLib.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 482, "sourceUnit": 733, "src": "98:37:9", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4, "name": "SSVClusters", "nameLocations": ["158:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1851, "src": "158:11:9"}, "id": 5, "nodeType": "InheritanceSpecifier", "src": "158:11:9"}], "canonicalName": "Clusters", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 481, "linearizedBaseContracts": [481, 1851, 2270, 1967], "name": "Clusters", "nameLocation": "146:8:9", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 9, "libraryName": {"id": 6, "name": "ClusterLib", "nameLocations": ["182:10:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 732, "src": "182:10:9"}, "nodeType": "UsingForDirective", "src": "176:29:9", "typeName": {"id": 8, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7, "name": "Cluster", "nameLocations": ["197:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "197:7:9"}, "referencedDeclaration": 1906, "src": "197:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}}, {"body": {"id": 12, "nodeType": "Block", "src": "225:2:9", "statements": []}, "id": 13, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 10, "nodeType": "ParameterList", "parameters": [], "src": "222:2:9"}, "returnParameters": {"id": 11, "nodeType": "ParameterList", "parameters": [], "src": "225:0:9"}, "scope": 481, "src": "211:16:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"constant": false, "id": 16, "mutability": "mutable", "name": "publicKeys", "nameLocation": "241:10:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "233:18:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 14, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "233:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 15, "nodeType": "ArrayTypeName", "src": "233:7:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "visibility": "internal"}, {"constant": false, "id": 19, "mutability": "mutable", "name": "hashedClusters", "nameLocation": "267:14:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "257:24:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[]"}, "typeName": {"baseType": {"id": 17, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "257:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 18, "nodeType": "ArrayTypeName", "src": "257:9:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]"}}, "visibility": "internal"}, {"constant": false, "functionSelector": "bfbdaffd", "id": 22, "mutability": "mutable", "name": "operatorIds", "nameLocation": "303:11:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "287:27:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 20, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "287:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 21, "nodeType": "ArrayTypeName", "src": "287:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "public"}, {"constant": true, "id": 25, "mutability": "constant", "name": "MIN_OPERATORS_LENGTH", "nameLocation": "345:20:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "321:48:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 23, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "321:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "34", "id": 24, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "368:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "visibility": "private"}, {"constant": true, "id": 28, "mutability": "constant", "name": "MAX_OPERATORS_LENGTH", "nameLocation": "399:20:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "375:49:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 26, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "375:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3133", "id": 27, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "422:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_13_by_1", "typeString": "int_const 13"}, "value": "13"}, "visibility": "private"}, {"constant": true, "id": 31, "mutability": "constant", "name": "MODULO_OPERATORS_LENGTH", "nameLocation": "454:23:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "430:51:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 29, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "430:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "33", "id": 30, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "480:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "visibility": "private"}, {"constant": true, "id": 34, "mutability": "constant", "name": "PUBLIC_KEY_LENGTH", "nameLocation": "511:17:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "487:46:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 32, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "487:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3438", "id": 33, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "531:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "visibility": "private"}, {"constant": false, "id": 37, "mutability": "mutable", "name": "sault", "nameLocation": "555:5:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "539:25:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 35, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "539:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "30", "id": 36, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "563:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "visibility": "private"}, {"body": {"id": 93, "nodeType": "Block", "src": "633:306:9", "statements": [{"assignments": [43], "declarations": [{"constant": false, "id": 43, "mutability": "mutable", "name": "randomBytes", "nameLocation": "656:11:9", "nodeType": "VariableDeclaration", "scope": 93, "src": "643:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 42, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "643:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 48, "initialValue": {"arguments": [{"hexValue": "3438", "id": 46, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "680:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}], "id": 45, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "670:9:9", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 44, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "674:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 47, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "670:13:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "643:40:9"}, {"body": {"id": 86, "nodeType": "Block", "src": "723:165:9", "statements": [{"expression": {"id": 84, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 59, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "737:11:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 61, "indexExpression": {"id": 60, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "749:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "737:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 81, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 71, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "816:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 72, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "823:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 73, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "829:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "823:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 74, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "840:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 75, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "844:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "840:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 76, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "852:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 69, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "799:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 70, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "803:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "799:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 77, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "799:55:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 68, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "789:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 78, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "789:66:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 67, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "784:4:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 66, "name": "uint", "nodeType": "ElementaryTypeName", "src": "784:4:9", "typeDescriptions": {}}}, "id": 79, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "784:72:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "323536", "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "859:3:9", "typeDescriptions": {"typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256"}, "value": "256"}, "src": "784:78:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 65, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "778:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 64, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "778:5:9", "typeDescriptions": {}}}, "id": 82, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "778:85:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 63, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "754:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 62, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "754:6:9", "typeDescriptions": {}}}, "id": 83, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "754:123:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "737:140:9", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 85, "nodeType": "ExpressionStatement", "src": "737:140:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 55, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 53, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "710:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "3438", "id": 54, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "714:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "src": "710:6:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 87, "initializationExpression": {"assignments": [50], "declarations": [{"constant": false, "id": 50, "mutability": "mutable", "name": "i", "nameLocation": "703:1:9", "nodeType": "VariableDeclaration", "scope": 87, "src": "698:6:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 49, "name": "uint", "nodeType": "ElementaryTypeName", "src": "698:4:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 52, "initialValue": {"hexValue": "30", "id": 51, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "707:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "698:10:9"}, "loopExpression": {"expression": {"id": 57, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "718:3:9", "subExpression": {"id": 56, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "718:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 58, "nodeType": "ExpressionStatement", "src": "718:3:9"}, "nodeType": "ForStatement", "src": "693:195:9"}, {"expression": {"id": 89, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "897:7:9", "subExpression": {"id": 88, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "897:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 90, "nodeType": "ExpressionStatement", "src": "897:7:9"}, {"expression": {"id": 91, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "921:11:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 41, "id": 92, "nodeType": "Return", "src": "914:18:9"}]}, "id": 94, "implemented": true, "kind": "function", "modifiers": [], "name": "_generatePublicKey", "nameLocation": "580:18:9", "nodeType": "FunctionDefinition", "parameters": {"id": 38, "nodeType": "ParameterList", "parameters": [], "src": "598:2:9"}, "returnParameters": {"id": 41, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 40, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 94, "src": "619:12:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 39, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "619:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "618:14:9"}, "scope": 481, "src": "571:368:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 219, "nodeType": "Block", "src": "1024:1090:9", "statements": [{"assignments": [101], "declarations": [{"constant": false, "id": 101, "mutability": "mutable", "name": "baseLength", "nameLocation": "1042:10:9", "nodeType": "VariableDeclaration", "scope": 219, "src": "1034:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 100, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1034:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 118, "initialValue": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"expression": {"id": 107, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1091:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 108, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1097:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1091:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 109, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1108:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1112:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1108:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 111, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1120:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 105, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1074:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1078:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1074:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1074:52:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 104, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1064:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1064:63:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 103, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1056:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 102, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1056:7:9", "typeDescriptions": {}}}, "id": 114, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1056:72:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 115, "name": "MIN_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, "src": "1143:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1056:107:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 117, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1055:109:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1034:130:9"}, {"assignments": [120], "declarations": [{"constant": false, "id": 120, "mutability": "mutable", "name": "length", "nameLocation": "1182:6:9", "nodeType": "VariableDeclaration", "scope": 219, "src": "1174:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 119, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1174:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 126, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "34", "id": 121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1191:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 122, "name": "baseLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 101, "src": "1195:10:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"hexValue": "33", "id": 123, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1208:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "src": "1195:14:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1191:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1174:35:9"}, {"expression": {"id": 128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1264:7:9", "subExpression": {"id": 127, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1264:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 129, "nodeType": "ExpressionStatement", "src": "1264:7:9"}, {"expression": {"id": 136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 130, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1282:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 134, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "1309:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 133, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1296:12:9", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint64_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint64[] memory)"}, "typeName": {"baseType": {"id": 131, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1300:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 132, "nodeType": "ArrayTypeName", "src": "1300:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}}, "id": 135, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1296:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "src": "1282:34:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 137, "nodeType": "ExpressionStatement", "src": "1282:34:9"}, {"body": {"id": 215, "nodeType": "Block", "src": "1363:717:9", "statements": [{"assignments": [149], "declarations": [{"constant": false, "id": 149, "mutability": "mutable", "name": "randomId", "nameLocation": "1384:8:9", "nodeType": "VariableDeclaration", "scope": 215, "src": "1377:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 148, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1377:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 150, "nodeType": "VariableDeclarationStatement", "src": "1377:15:9"}, {"assignments": [152], "declarations": [{"constant": false, "id": 152, "mutability": "mutable", "name": "unique", "nameLocation": "1411:6:9", "nodeType": "VariableDeclaration", "scope": 215, "src": "1406:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 151, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1406:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 153, "nodeType": "VariableDeclarationStatement", "src": "1406:11:9"}, {"body": {"id": 169, "nodeType": "Block", "src": "1434:187:9", "statements": [{"expression": {"id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1452:7:9", "subExpression": {"id": 154, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1452:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 156, "nodeType": "ExpressionStatement", "src": "1452:7:9"}, {"expression": {"id": 160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 157, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "1526:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "id": 158, "name": "_generateRandomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 247, "src": "1537:17:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_uint64_$", "typeString": "function () returns (uint64)"}}, "id": 159, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1537:19:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1526:30:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 161, "nodeType": "ExpressionStatement", "src": "1526:30:9"}, {"expression": {"id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 162, "name": "unique", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 152, "src": "1574:6:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1583:23:9", "subExpression": {"arguments": [{"id": 164, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "1597:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 163, "name": "_isDuplicate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 279, "src": "1584:12:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint64_$returns$_t_bool_$", "typeString": "function (uint64) view returns (bool)"}}, "id": 165, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1584:22:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1574:32:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 168, "nodeType": "ExpressionStatement", "src": "1574:32:9"}]}, "condition": {"id": 171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1629:7:9", "subExpression": {"id": 170, "name": "unique", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 152, "src": "1630:6:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 172, "nodeType": "DoWhileStatement", "src": "1431:207:9"}, {"assignments": [174], "declarations": [{"constant": false, "id": 174, "mutability": "mutable", "name": "j", "nameLocation": "1723:1:9", "nodeType": "VariableDeclaration", "scope": 215, "src": "1715:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 173, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1715:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 176, "initialValue": {"id": 175, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, "src": "1727:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1715:13:9"}, {"body": {"id": 207, "nodeType": "Block", "src": "1789:190:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 191, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 188, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1811:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 189, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1815:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1827:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "1815:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1811:22:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 203, "nodeType": "IfStatement", "src": "1807:137:9", "trueBody": {"id": 202, "nodeType": "Block", "src": "1835:109:9", "statements": [{"expression": {"id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 192, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1857:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 194, "indexExpression": {"id": 193, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1869:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1857:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"baseExpression": {"id": 195, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1874:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 199, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 196, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1886:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1890:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1886:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1874:18:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1857:35:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 201, "nodeType": "ExpressionStatement", "src": "1857:35:9"}]}}, {"expression": {"id": 205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "1961:3:9", "subExpression": {"id": 204, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1961:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 206, "nodeType": "ExpressionStatement", "src": "1961:3:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 177, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1749:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1753:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1749:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 180, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1758:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 184, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 181, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1770:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 182, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1774:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1770:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1758:18:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 185, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "1779:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1758:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1749:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 208, "nodeType": "WhileStatement", "src": "1742:237:9"}, {"expression": {"id": 213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 209, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1992:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 211, "indexExpression": {"id": 210, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "2004:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1992:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 212, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "2009:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1992:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 214, "nodeType": "ExpressionStatement", "src": "1992:25:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 142, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, "src": "1346:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 143, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "1350:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1346:10:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 216, "initializationExpression": {"assignments": [139], "declarations": [{"constant": false, "id": 139, "mutability": "mutable", "name": "i", "nameLocation": "1339:1:9", "nodeType": "VariableDeclaration", "scope": 216, "src": "1331:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 138, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1331:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 141, "initialValue": {"hexValue": "30", "id": 140, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1343:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1331:13:9"}, "loopExpression": {"expression": {"id": 146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1358:3:9", "subExpression": {"id": 145, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, "src": "1358:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 147, "nodeType": "ExpressionStatement", "src": "1358:3:9"}, "nodeType": "ForStatement", "src": "1326:754:9"}, {"expression": {"id": 217, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "2096:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "functionReturnParameters": 99, "id": 218, "nodeType": "Return", "src": "2089:18:9"}]}, "id": 220, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateOperatorIds", "nameLocation": "954:20:9", "nodeType": "FunctionDefinition", "parameters": {"id": 95, "nodeType": "ParameterList", "parameters": [], "src": "974:2:9"}, "returnParameters": {"id": 99, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 98, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1011:11:9", "nodeType": "VariableDeclaration", "scope": 220, "src": "995:27:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 96, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "995:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 97, "nodeType": "ArrayTypeName", "src": "995:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}], "src": "994:29:9"}, "scope": 481, "src": "945:1169:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 246, "nodeType": "Block", "src": "2175:114:9", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"expression": {"id": 232, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "2234:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2240:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "2234:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 234, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2251:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2255:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "2251:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 236, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2263:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 230, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2217:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 231, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2221:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2217:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2217:52:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 229, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2207:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 238, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2207:63:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 228, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2199:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 227, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2199:7:9", "typeDescriptions": {}}}, "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2199:72:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 242, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 240, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2274:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2279:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "2274:7:9", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "src": "2199:82:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 226, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2192:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 225, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2192:6:9", "typeDescriptions": {}}}, "id": 244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2192:90:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 224, "id": 245, "nodeType": "Return", "src": "2185:97:9"}]}, "id": 247, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateRandomId", "nameLocation": "2129:17:9", "nodeType": "FunctionDefinition", "parameters": {"id": 221, "nodeType": "ParameterList", "parameters": [], "src": "2146:2:9"}, "returnParameters": {"id": 224, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 223, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 247, "src": "2167:6:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 222, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2167:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2166:8:9"}, "scope": 481, "src": "2120:169:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 278, "nodeType": "Block", "src": "2357:181:9", "statements": [{"body": {"id": 274, "nodeType": "Block", "src": "2416:94:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 269, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 265, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22, "src": "2434:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 267, "indexExpression": {"id": 266, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 255, "src": "2446:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2434:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 268, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "2452:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2434:20:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 273, "nodeType": "IfStatement", "src": "2430:70:9", "trueBody": {"id": 272, "nodeType": "Block", "src": "2456:44:9", "statements": [{"expression": {"hexValue": "74727565", "id": 270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2481:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 253, "id": 271, "nodeType": "Return", "src": "2474:11:9"}]}}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 258, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 255, "src": "2387:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 259, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22, "src": "2391:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2403:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "2391:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2387:22:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 275, "initializationExpression": {"assignments": [255], "declarations": [{"constant": false, "id": 255, "mutability": "mutable", "name": "i", "nameLocation": "2380:1:9", "nodeType": "VariableDeclaration", "scope": 275, "src": "2372:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 254, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2372:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 257, "initialValue": {"hexValue": "30", "id": 256, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2384:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "2372:13:9"}, "loopExpression": {"expression": {"id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2411:3:9", "subExpression": {"id": 262, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 255, "src": "2411:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 264, "nodeType": "ExpressionStatement", "src": "2411:3:9"}, "nodeType": "ForStatement", "src": "2367:143:9"}, {"expression": {"hexValue": "66616c7365", "id": 276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2526:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 253, "id": 277, "nodeType": "Return", "src": "2519:12:9"}]}, "id": 279, "implemented": true, "kind": "function", "modifiers": [], "name": "_isDuplicate", "nameLocation": "2304:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 250, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 249, "mutability": "mutable", "name": "id", "nameLocation": "2324:2:9", "nodeType": "VariableDeclaration", "scope": 279, "src": "2317:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 248, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2317:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2316:11:9"}, "returnParameters": {"id": 253, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 252, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 279, "src": "2351:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 251, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2351:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2350:6:9"}, "scope": 481, "src": "2295:243:9", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 405, "nodeType": "Block", "src": "2652:880:9", "statements": [{"assignments": [291], "declarations": [{"constant": false, "id": 291, "mutability": "mutable", "name": "s", "nameLocation": "2682:1:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2662:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 290, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 289, "name": "StorageData", "nameLocations": ["2662:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "2662:11:9"}, "referencedDeclaration": 2024, "src": "2662:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 295, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 292, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "2686:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2697:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "2686:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2686:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2662:41:9"}, {"assignments": [297], "declarations": [{"constant": false, "id": 297, "mutability": "mutable", "name": "_publicKey", "nameLocation": "2727:10:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2714:23:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 296, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2714:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 300, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 298, "name": "_generatePublicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 94, "src": "2740:18:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () returns (bytes memory)"}}, "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2740:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2714:46:9"}, {"assignments": [305], "declarations": [{"constant": false, "id": 305, "mutability": "mutable", "name": "_operatorIds", "nameLocation": "2786:12:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2770:28:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 303, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2770:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 304, "nodeType": "ArrayTypeName", "src": "2770:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}], "id": 308, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 306, "name": "_generateOperatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, "src": "2801:20:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_array$_t_uint64_$dyn_memory_ptr_$", "typeString": "function () returns (uint64[] memory)"}}, "id": 307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2801:22:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2770:53:9"}, {"assignments": [310], "declarations": [{"constant": false, "id": 310, "mutability": "mutable", "name": "_hashedCluster", "nameLocation": "2842:14:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2834:22:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 309, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2834:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 319, "initialValue": {"arguments": [{"arguments": [{"expression": {"id": 314, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2886:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2890:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "2886:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 316, "name": "_operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 305, "src": "2898:12:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 312, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2869:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 313, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2873:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2869:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 317, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2869:42:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 311, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2859:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 318, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2859:53:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "2834:78:9"}, {"assignments": [321], "declarations": [{"constant": false, "id": 321, "mutability": "mutable", "name": "clusterData", "nameLocation": "2931:11:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2923:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 320, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2923:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 326, "initialValue": {"baseExpression": {"expression": {"id": 322, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "2945:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2947:8:9", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "2945:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 325, "indexExpression": {"id": 324, "name": "_hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 310, "src": "2956:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2945:26:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "2923:48:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 327, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, "src": "2985:11:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 330, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3008:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 329, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3000:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 328, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3000:7:9", "typeDescriptions": {}}}, "id": 331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3000:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2985:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 374, "nodeType": "Block", "src": "3209:79:9", "statements": [{"expression": {"id": 372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 364, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "3223:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3225:8:9", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "3223:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 368, "indexExpression": {"id": 366, "name": "_hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 310, "src": "3234:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3223:26:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 369, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3252:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 370, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3260:15:9", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "3252:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3252:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "3223:54:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 373, "nodeType": "ExpressionStatement", "src": "3223:54:9"}]}, "id": 375, "nodeType": "IfStatement", "src": "2981:307:9", "trueBody": {"id": 363, "nodeType": "Block", "src": "3012:191:9", "statements": [{"expression": {"id": 337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 333, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3026:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 335, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3034:14:9", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "3026:22:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 336, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3051:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3026:26:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 338, "nodeType": "ExpressionStatement", "src": "3026:26:9"}, {"expression": {"id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 339, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3066:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3074:15:9", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "3066:23:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 342, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3092:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3066:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 344, "nodeType": "ExpressionStatement", "src": "3066:27:9"}, {"expression": {"id": 349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 345, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3107:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 347, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3115:5:9", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "3107:13:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3123:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3107:17:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 350, "nodeType": "ExpressionStatement", "src": "3107:17:9"}, {"expression": {"id": 355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 351, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3138:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 353, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3146:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "3138:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3156:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3138:19:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 356, "nodeType": "ExpressionStatement", "src": "3138:19:9"}, {"expression": {"id": 361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 357, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3171:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 359, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3179:6:9", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "3171:14:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3188:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "3171:21:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 362, "nodeType": "ExpressionStatement", "src": "3171:21:9"}]}}, {"clauses": [{"block": {"id": 396, "nodeType": "Block", "src": "3380:101:9", "statements": [{"expression": {"arguments": [{"id": 387, "name": "_publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "3410:10:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 384, "name": "publicKeys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "3394:10:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes storage ref[] storage ref"}}, "id": 386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3405:4:9", "memberName": "push", "nodeType": "MemberAccess", "src": "3394:15:9", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes_storage_$dyn_storage_ptr_$_t_bytes_storage_$returns$__$attached_to$_t_array$_t_bytes_storage_$dyn_storage_ptr_$", "typeString": "function (bytes storage ref[] storage pointer,bytes storage ref)"}}, "id": 388, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3394:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 389, "nodeType": "ExpressionStatement", "src": "3394:27:9"}, {"expression": {"arguments": [{"id": 393, "name": "_hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 310, "src": "3455:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 390, "name": "hashedClusters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3435:14:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[] storage ref"}}, "id": 392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3450:4:9", "memberName": "push", "nodeType": "MemberAccess", "src": "3435:19:9", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", "typeString": "function (bytes32[] storage pointer,bytes32)"}}, "id": 394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3435:35:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 395, "nodeType": "ExpressionStatement", "src": "3435:35:9"}]}, "errorName": "", "id": 397, "nodeType": "TryCatchClause", "src": "3380:101:9"}, {"block": {"id": 402, "nodeType": "Block", "src": "3488:38:9", "statements": [{"expression": {"arguments": [{"hexValue": "66616c7365", "id": 399, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3509:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 398, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "3502:6:9", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3502:13:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 401, "nodeType": "ExpressionStatement", "src": "3502:13:9"}]}, "errorName": "", "id": 403, "nodeType": "TryCatchClause", "src": "3482:44:9"}], "externalCall": {"arguments": [{"id": 378, "name": "_publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "3325:10:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 379, "name": "_operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 305, "src": "3337:12:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 380, "name": "sharesData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 281, "src": "3351:10:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 381, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 283, "src": "3363:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 382, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3371:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "expression": {"id": 376, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3302:4:9", "typeDescriptions": {"typeIdentifier": "t_contract$_Clusters_$481", "typeString": "contract Clusters"}}, "id": 377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3307:17:9", "memberName": "registerValidator", "nodeType": "MemberAccess", "referencedDeclaration": 1161, "src": "3302:22:9", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (bytes memory,uint64[] memory,bytes memory,uint256,struct ISSVNetworkCore.Cluster memory) external"}}, "id": 383, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3302:77:9", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 404, "nodeType": "TryStatement", "src": "3298:228:9"}]}, "functionSelector": "d86eda8c", "id": 406, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_registerValidator", "nameLocation": "2553:24:9", "nodeType": "FunctionDefinition", "parameters": {"id": 287, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 281, "mutability": "mutable", "name": "sharesData", "nameLocation": "2593:10:9", "nodeType": "VariableDeclaration", "scope": 406, "src": "2578:25:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 280, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2578:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 283, "mutability": "mutable", "name": "amount", "nameLocation": "2613:6:9", "nodeType": "VariableDeclaration", "scope": 406, "src": "2605:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 282, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2605:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 286, "mutability": "mutable", "name": "cluster", "nameLocation": "2636:7:9", "nodeType": "VariableDeclaration", "scope": 406, "src": "2621:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 285, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 284, "name": "Cluster", "nameLocations": ["2621:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2621:7:9"}, "referencedDeclaration": 1906, "src": "2621:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2577:67:9"}, "returnParameters": {"id": 288, "nodeType": "ParameterList", "parameters": [], "src": "2652:0:9"}, "scope": 481, "src": "2544:988:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 437, "nodeType": "Block", "src": "3651:148:9", "statements": [{"expression": {"id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 417, "name": "publicKeyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 408, "src": "3661:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 418, "name": "publicKeyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 408, "src": "3675:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 421, "name": "publicKeys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "3696:10:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes storage ref[] storage ref"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3707:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "3696:17:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 420, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3689:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 419, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3689:6:9", "typeDescriptions": {}}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3689:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3675:39:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3661:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 426, "nodeType": "ExpressionStatement", "src": "3661:53:9"}, {"expression": {"arguments": [{"baseExpression": {"id": 430, "name": "publicKeys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "3746:10:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes storage ref[] storage ref"}}, "id": 432, "indexExpression": {"id": 431, "name": "publicKeyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 408, "src": "3757:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3746:23:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage", "typeString": "bytes storage ref"}}, {"id": 433, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "3771:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 434, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 414, "src": "3784:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_storage", "typeString": "bytes storage ref"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "expression": {"id": 427, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3725:4:9", "typeDescriptions": {"typeIdentifier": "t_contract$_Clusters_$481", "typeString": "contract Clusters"}}, "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3730:15:9", "memberName": "removeValidator", "nodeType": "MemberAccess", "referencedDeclaration": 1319, "src": "3725:20:9", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (bytes memory,uint64[] memory,struct ISSVNetworkCore.Cluster memory) external"}}, "id": 435, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3725:67:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 436, "nodeType": "ExpressionStatement", "src": "3725:67:9"}]}, "functionSelector": "d7b8edbd", "id": 438, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removeValidator", "nameLocation": "3547:21:9", "nodeType": "FunctionDefinition", "parameters": {"id": 415, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 408, "mutability": "mutable", "name": "publicKeyId", "nameLocation": "3576:11:9", "nodeType": "VariableDeclaration", "scope": 438, "src": "3569:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 407, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3569:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 411, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3607:11:9", "nodeType": "VariableDeclaration", "scope": 438, "src": "3589:29:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 409, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3589:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 410, "nodeType": "ArrayTypeName", "src": "3589:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 414, "mutability": "mutable", "name": "cluster", "nameLocation": "3635:7:9", "nodeType": "VariableDeclaration", "scope": 438, "src": "3620:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 413, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 412, "name": "Cluster", "nameLocations": ["3620:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3620:7:9"}, "referencedDeclaration": 1906, "src": "3620:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3568:75:9"}, "returnParameters": {"id": 416, "nodeType": "ParameterList", "parameters": [], "src": "3651:0:9"}, "scope": 481, "src": "3538:261:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 475, "nodeType": "Block", "src": "3852:195:9", "statements": [{"assignments": [443], "declarations": [{"constant": false, "id": 443, "mutability": "mutable", "name": "s", "nameLocation": "3882:1:9", "nodeType": "VariableDeclaration", "scope": 475, "src": "3862:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 442, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 441, "name": "StorageData", "nameLocations": ["3862:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "3862:11:9"}, "referencedDeclaration": 2024, "src": "3862:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 447, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 444, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "3886:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3897:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "3886:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3886:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3862:41:9"}, {"body": {"id": 473, "nodeType": "Block", "src": "3965:76:9", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 460, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 443, "src": "3986:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 461, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3988:8:9", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "3986:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 465, "indexExpression": {"baseExpression": {"id": 462, "name": "hashedClusters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3997:14:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[] storage ref"}}, "id": 464, "indexExpression": {"id": 463, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 449, "src": "4012:1:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3997:17:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3986:29:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4027:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 467, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4019:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 466, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4019:7:9", "typeDescriptions": {}}}, "id": 469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4019:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "3986:43:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 459, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "3979:6:9", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3979:51:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 472, "nodeType": "ExpressionStatement", "src": "3979:51:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 455, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 452, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 449, "src": "3933:1:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 453, "name": "hashedClusters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3937:14:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[] storage ref"}}, "id": 454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3952:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "3937:21:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3933:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 474, "initializationExpression": {"assignments": [449], "declarations": [{"constant": false, "id": 449, "mutability": "mutable", "name": "i", "nameLocation": "3926:1:9", "nodeType": "VariableDeclaration", "scope": 474, "src": "3919:8:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 448, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3919:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 451, "initialValue": {"hexValue": "30", "id": 450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3930:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "3919:12:9"}, "loopExpression": {"expression": {"id": 457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3960:3:9", "subExpression": {"id": 456, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 449, "src": "3960:1:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 458, "nodeType": "ExpressionStatement", "src": "3960:3:9"}, "nodeType": "ForStatement", "src": "3914:127:9"}]}, "functionSelector": "01ddff09", "id": 476, "implemented": true, "kind": "function", "modifiers": [], "name": "check_invariant_validatorPKs", "nameLocation": "3814:28:9", "nodeType": "FunctionDefinition", "parameters": {"id": 439, "nodeType": "ParameterList", "parameters": [], "src": "3842:2:9"}, "returnParameters": {"id": 440, "nodeType": "ParameterList", "parameters": [], "src": "3852:0:9"}, "scope": 481, "src": "3805:242:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 479, "nodeType": "Block", "src": "4096:2:9", "statements": []}, "functionSelector": "626b6b8d", "id": 480, "implemented": true, "kind": "function", "modifiers": [], "name": "check_numberOfValidators", "nameLocation": "4062:24:9", "nodeType": "FunctionDefinition", "parameters": {"id": 477, "nodeType": "ParameterList", "parameters": [], "src": "4086:2:9"}, "returnParameters": {"id": 478, "nodeType": "ParameterList", "parameters": [], "src": "4096:0:9"}, "scope": 481, "src": "4053:45:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 482, "src": "137:3963:9", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:4056:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVClusters.sol": {"AST": {"absolutePath": "contracts/modules/SSVClusters.sol", "exportedSymbols": {"ClusterLib": [732], "CoreLib": [2401], "Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVClusters": [2270], "ISSVNetworkCore": [1967], "OperatorLib": [2644], "ProtocolLib": [2812], "SSVClusters": [1851], "SSVModules": [1977], "SSVStorage": [2047], "SSVStorageProtocol": [2877], "StorageData": [2024], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 1852, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 734, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:10"}, {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "file": "../interfaces/ISSVClusters.sol", "id": 735, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2271, "src": "70:40:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ClusterLib.sol", "file": "../libraries/ClusterLib.sol", "id": 736, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 733, "src": "111:37:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/OperatorLib.sol", "file": "../libraries/OperatorLib.sol", "id": 737, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2645, "src": "149:38:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 738, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2813, "src": "188:38:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 739, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2402, "src": "227:34:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 740, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2048, "src": "262:37:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "../libraries/SSVStorageProtocol.sol", "id": 741, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2878, "src": "300:45:10", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 742, "name": "ISSVClusters", "nameLocations": ["371:12:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2270, "src": "371:12:10"}, "id": 743, "nodeType": "InheritanceSpecifier", "src": "371:12:10"}], "canonicalName": "SSVClusters", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 1851, "linearizedBaseContracts": [1851, 2270, 1967], "name": "SSVClusters", "nameLocation": "356:11:10", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 747, "libraryName": {"id": 744, "name": "ClusterLib", "nameLocations": ["396:10:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 732, "src": "396:10:10"}, "nodeType": "UsingForDirective", "src": "390:29:10", "typeName": {"id": 746, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 745, "name": "Cluster", "nameLocations": ["411:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "411:7:10"}, "referencedDeclaration": 1906, "src": "411:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}}, {"global": false, "id": 751, "libraryName": {"id": 748, "name": "OperatorLib", "nameLocations": ["430:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2644, "src": "430:11:10"}, "nodeType": "UsingForDirective", "src": "424:31:10", "typeName": {"id": 750, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 749, "name": "Operator", "nameLocations": ["446:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "446:8:10"}, "referencedDeclaration": 1880, "src": "446:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, {"global": false, "id": 755, "libraryName": {"id": 752, "name": "ProtocolLib", "nameLocations": ["466:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2812, "src": "466:11:10"}, "nodeType": "UsingForDirective", "src": "460:38:10", "typeName": {"id": 754, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 753, "name": "StorageProtocol", "nameLocations": ["482:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "482:15:10"}, "referencedDeclaration": 2854, "src": "482:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 758, "mutability": "constant", "name": "MIN_OPERATORS_LENGTH", "nameLocation": "527:20:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "503:48:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 756, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "503:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "34", "id": 757, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "550:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "visibility": "private"}, {"constant": true, "id": 761, "mutability": "constant", "name": "MAX_OPERATORS_LENGTH", "nameLocation": "581:20:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "557:49:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 759, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "557:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3133", "id": 760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "604:2:10", "typeDescriptions": {"typeIdentifier": "t_rational_13_by_1", "typeString": "int_const 13"}, "value": "13"}, "visibility": "private"}, {"constant": true, "id": 764, "mutability": "constant", "name": "MODULO_OPERATORS_LENGTH", "nameLocation": "636:23:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "612:51:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 762, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "612:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "33", "id": 763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "662:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "visibility": "private"}, {"constant": true, "id": 767, "mutability": "constant", "name": "PUBLIC_KEY_LENGTH", "nameLocation": "693:17:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "669:46:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "669:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3438", "id": 766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "713:2:10", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "visibility": "private"}, {"baseFunctions": [2135], "body": {"id": 1160, "nodeType": "Block", "src": "935:3871:10", "statements": [{"assignments": [785], "declarations": [{"constant": false, "id": 785, "mutability": "mutable", "name": "s", "nameLocation": "965:1:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "945:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 784, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 783, "name": "StorageData", "nameLocations": ["945:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "945:11:10"}, "referencedDeclaration": 2024, "src": "945:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 789, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 786, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "969:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "980:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "969:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 788, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "969:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "945:41:10"}, {"assignments": [792], "declarations": [{"constant": false, "id": 792, "mutability": "mutable", "name": "sp", "nameLocation": "1020:2:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "996:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 791, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 790, "name": "StorageProtocol", "nameLocations": ["996:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "996:15:10"}, "referencedDeclaration": 2854, "src": "996:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 796, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 793, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "1025:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1044:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "1025:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 795, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1025:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "996:54:10"}, {"assignments": [798], "declarations": [{"constant": false, "id": 798, "mutability": "mutable", "name": "operatorsLength", "nameLocation": "1069:15:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "1061:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 797, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1061:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 801, "initialValue": {"expression": {"id": 799, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "1087:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1099:6:10", "memberName": "length", "nodeType": "MemberAccess", "src": "1087:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1061:44:10"}, {"id": 877, "nodeType": "Block", "src": "1115:715:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 808, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 802, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "1150:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 803, "name": "MIN_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 758, "src": "1168:20:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1150:38:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 805, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "1208:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 806, "name": "MAX_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 761, "src": "1226:20:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1208:38:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1150:96:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 809, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "1266:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 810, "name": "MODULO_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1284:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1266:41:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "31", "id": 812, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1311:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1266:46:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1150:162:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 819, "nodeType": "IfStatement", "src": "1129:264:10", "trueBody": {"id": 818, "nodeType": "Block", "src": "1327:66:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 815, "name": "InvalidOperatorIdsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1934, "src": "1352:24:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1352:26:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 817, "nodeType": "RevertStatement", "src": "1345:33:10"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 820, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 769, "src": "1411:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "id": 821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1421:6:10", "memberName": "length", "nodeType": "MemberAccess", "src": "1411:16:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 822, "name": "PUBLIC_KEY_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 767, "src": "1431:17:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1411:37:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 827, "nodeType": "IfStatement", "src": "1407:74:10", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 824, "name": "InvalidPublicKeyLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1932, "src": "1457:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1457:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 826, "nodeType": "RevertStatement", "src": "1450:31:10"}}, {"assignments": [829], "declarations": [{"constant": false, "id": 829, "mutability": "mutable", "name": "hashedPk", "nameLocation": "1504:8:10", "nodeType": "VariableDeclaration", "scope": 877, "src": "1496:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 828, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1496:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 838, "initialValue": {"arguments": [{"arguments": [{"id": 833, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 769, "src": "1542:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"expression": {"id": 834, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1553:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1557:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "1553:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 831, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1525:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 832, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1529:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1525:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 836, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:39:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 830, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1515:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 837, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1515:50:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1496:69:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 839, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "1584:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 840, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1586:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "1584:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 842, "indexExpression": {"id": 841, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "1599:8:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1584:24:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 845, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1620:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 844, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1612:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 843, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1612:7:10", "typeDescriptions": {}}}, "id": 846, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1612:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1584:38:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 852, "nodeType": "IfStatement", "src": "1580:108:10", "trueBody": {"id": 851, "nodeType": "Block", "src": "1624:64:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 848, "name": "ValidatorAlreadyExists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1924, "src": "1649:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 849, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1649:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 850, "nodeType": "RevertStatement", "src": "1642:31:10"}]}}, {"expression": {"id": 875, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 853, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "1702:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 856, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1704:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "1702:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 857, "indexExpression": {"id": 855, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "1717:8:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1702:24:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 873, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 865, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "1772:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 863, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1755:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 864, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1759:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1755:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:29:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 862, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1745:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1745:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 861, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1737:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 860, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1737:7:10", "typeDescriptions": {}}}, "id": 868, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1737:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "|", "rightExpression": {"arguments": [{"hexValue": "30783031", "id": 871, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1797:4:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "0x01"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 870, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1789:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 869, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1789:7:10", "typeDescriptions": {}}}, "id": 872, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1789:13:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1737:65:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 859, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1729:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 858, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1729:7:10", "typeDescriptions": {}}}, "id": 874, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1729:74:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1702:101:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 876, "nodeType": "ExpressionStatement", "src": "1702:101:10"}]}, {"assignments": [879], "declarations": [{"constant": false, "id": 879, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "1847:13:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "1839:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 878, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1839:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 888, "initialValue": {"arguments": [{"arguments": [{"expression": {"id": 883, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1890:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 884, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1894:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "1890:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 885, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "1902:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 881, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1873:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 882, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1877:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1873:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 886, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1873:41:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 880, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1863:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1863:52:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1839:76:10"}, {"id": 948, "nodeType": "Block", "src": "1926:661:10", "statements": [{"assignments": [890], "declarations": [{"constant": false, "id": 890, "mutability": "mutable", "name": "clusterData", "nameLocation": "1948:11:10", "nodeType": "VariableDeclaration", "scope": 948, "src": "1940:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 889, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1940:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 895, "initialValue": {"baseExpression": {"expression": {"id": 891, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "1962:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 892, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1964:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "1962:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 894, "indexExpression": {"id": 893, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "1973:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1962:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1940:47:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 896, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 890, "src": "2005:11:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2028:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 898, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2020:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 897, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2020:7:10", "typeDescriptions": {}}}, "id": 900, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2020:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2005:25:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 935, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 931, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 890, "src": "2393:11:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 932, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2408:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 933, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2416:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "2408:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 934, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2408:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2393:40:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 945, "nodeType": "Block", "src": "2504:73:10", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 940, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2522:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 942, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2530:30:10", "memberName": "validateClusterIsNotLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 612, "src": "2522:38:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure"}}, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2522:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 944, "nodeType": "ExpressionStatement", "src": "2522:40:10"}]}, "id": 946, "nodeType": "IfStatement", "src": "2389:188:10", "trueBody": {"id": 939, "nodeType": "Block", "src": "2435:63:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 936, "name": "IncorrectClusterState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1942, "src": "2460:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 937, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2460:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 938, "nodeType": "RevertStatement", "src": "2453:30:10"}]}}, "id": 947, "nodeType": "IfStatement", "src": "2001:576:10", "trueBody": {"id": 930, "nodeType": "Block", "src": "2032:351:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 915, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 905, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 902, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2075:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 903, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2083:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "2075:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2101:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2075:27:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 909, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 906, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2126:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 907, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2134:15:10", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "2126:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 908, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2153:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2126:28:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:79:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 911, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2178:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 912, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2186:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "2178:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2195:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2178:18:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:121:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 916, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2220:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 917, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2228:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "2220:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2239:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2220:20:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:165:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"id": 923, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2264:15:10", "subExpression": {"expression": {"id": 921, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2265:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 922, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2273:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "2265:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:204:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 929, "nodeType": "IfStatement", "src": "2050:319:10", "trueBody": {"id": 928, "nodeType": "Block", "src": "2298:71:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 925, "name": "IncorrectClusterState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1942, "src": "2327:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 926, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2327:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 927, "nodeType": "RevertStatement", "src": "2320:30:10"}]}}]}}]}, {"expression": {"id": 953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 949, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2597:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 951, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2605:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "2597:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 952, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 776, "src": "2616:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2597:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 954, "nodeType": "ExpressionStatement", "src": "2597:25:10"}, {"assignments": [956], "declarations": [{"constant": false, "id": 956, "mutability": "mutable", "name": "burnRate", "nameLocation": "2640:8:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "2633:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 955, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2633:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 957, "nodeType": "VariableDeclarationStatement", "src": "2633:15:10"}, {"condition": {"expression": {"id": 958, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2663:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 959, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2671:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "2663:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1110, "nodeType": "IfStatement", "src": "2659:1596:10", "trueBody": {"id": 1109, "nodeType": "Block", "src": "2679:1576:10", "statements": [{"assignments": [961], "declarations": [{"constant": false, "id": 961, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "2700:12:10", "nodeType": "VariableDeclaration", "scope": 1109, "src": "2693:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 960, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2693:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 962, "nodeType": "VariableDeclarationStatement", "src": "2693:19:10"}, {"body": {"id": 1091, "nodeType": "Block", "src": "2766:1361:10", "statements": [{"assignments": [970], "declarations": [{"constant": false, "id": 970, "mutability": "mutable", "name": "operatorId", "nameLocation": "2791:10:10", "nodeType": "VariableDeclaration", "scope": 1091, "src": "2784:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 969, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2784:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 974, "initialValue": {"baseExpression": {"id": 971, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "2804:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 973, "indexExpression": {"id": 972, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2816:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2804:14:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2784:34:10"}, {"id": 1006, "nodeType": "Block", "src": "2836:373:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 975, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2862:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 976, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2866:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2862:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 978, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "2870:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2862:23:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1005, "nodeType": "IfStatement", "src": "2858:333:10", "trueBody": {"id": 1004, "nodeType": "Block", "src": "2887:304:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 986, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 980, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "2917:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"baseExpression": {"id": 981, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "2930:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 985, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 984, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 982, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2942:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2946:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2942:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2930:18:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2917:31:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 991, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3047:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"baseExpression": {"id": 992, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "3061:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 996, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 995, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 993, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "3073:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3077:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3073:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3061:18:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3047:32:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1002, "nodeType": "IfStatement", "src": "3043:126:10", "trueBody": {"id": 1001, "nodeType": "Block", "src": "3081:88:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 998, "name": "OperatorsListNotUnique", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1958, "src": "3118:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 999, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3118:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1000, "nodeType": "RevertStatement", "src": "3111:31:10"}]}}, "id": 1003, "nodeType": "IfStatement", "src": "2913:256:10", "trueBody": {"id": 990, "nodeType": "Block", "src": "2950:87:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 987, "name": "UnsortedOperatorsList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1944, "src": "2987:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 988, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2987:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 989, "nodeType": "RevertStatement", "src": "2980:30:10"}]}}]}}]}, {"assignments": [1009], "declarations": [{"constant": false, "id": 1009, "mutability": "mutable", "name": "operator", "nameLocation": "3243:8:10", "nodeType": "VariableDeclaration", "scope": 1091, "src": "3227:24:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1008, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1007, "name": "Operator", "nameLocations": ["3227:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "3227:8:10"}, "referencedDeclaration": 1880, "src": "3227:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1014, "initialValue": {"baseExpression": {"expression": {"id": 1010, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3254:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1011, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3256:9:10", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "3254:11:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1013, "indexExpression": {"id": 1012, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3266:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3254:23:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3227:50:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1019, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1015, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3299:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1016, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3308:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "3299:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1017, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3317:5:10", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "3299:23:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1018, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3326:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3299:28:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1024, "nodeType": "IfStatement", "src": "3295:104:10", "trueBody": {"id": 1023, "nodeType": "Block", "src": "3329:70:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1020, "name": "OperatorDoesNotExist", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1920, "src": "3358:20:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1021, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3358:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1022, "nodeType": "RevertStatement", "src": "3351:29:10"}]}}, {"condition": {"expression": {"id": 1025, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3420:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1026, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3429:11:10", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1875, "src": "3420:20:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1051, "nodeType": "IfStatement", "src": "3416:280:10", "trueBody": {"id": 1050, "nodeType": "Block", "src": "3442:254:10", "statements": [{"assignments": [1028], "declarations": [{"constant": false, "id": 1028, "mutability": "mutable", "name": "whitelisted", "nameLocation": "3472:11:10", "nodeType": "VariableDeclaration", "scope": 1050, "src": "3464:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1027, "name": "address", "nodeType": "ElementaryTypeName", "src": "3464:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1033, "initialValue": {"baseExpression": {"expression": {"id": 1029, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3486:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1030, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3488:18:10", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2003, "src": "3486:20:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 1032, "indexExpression": {"id": 1031, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3507:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3486:32:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3464:54:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1034, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1028, "src": "3544:11:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1037, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3567:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1036, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3559:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1035, "name": "address", "nodeType": "ElementaryTypeName", "src": "3559:7:10", "typeDescriptions": {}}}, "id": 1038, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3559:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3544:25:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1040, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1028, "src": "3573:11:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 1041, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3588:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1042, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3592:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "3588:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3573:25:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3544:54:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1049, "nodeType": "IfStatement", "src": "3540:138:10", "trueBody": {"id": 1048, "nodeType": "Block", "src": "3600:78:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1045, "name": "CallerNotWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1910, "src": "3633:20:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1046, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3633:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1047, "nodeType": "RevertStatement", "src": "3626:29:10"}]}}]}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1052, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3713:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1054, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3722:14:10", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "3713:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1880_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1880_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3713:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1056, "nodeType": "ExpressionStatement", "src": "3713:25:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1059, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "3760:25:10", "subExpression": {"expression": {"id": 1057, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3762:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1058, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3771:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "3762:23:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1060, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "3788:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1061, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3791:26:10", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 2826, "src": "3788:29:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "3760:57:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1067, "nodeType": "IfStatement", "src": "3756:133:10", "trueBody": {"id": 1066, "nodeType": "Block", "src": "3819:70:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1063, "name": "ExceedValidatorLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1948, "src": "3848:20:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3848:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1065, "nodeType": "RevertStatement", "src": "3841:29:10"}]}}, {"expression": {"id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1068, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 961, "src": "3906:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 1069, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3922:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1070, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3931:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "3922:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1071, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3940:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "3922:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3906:39:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1073, "nodeType": "ExpressionStatement", "src": "3906:39:10"}, {"expression": {"id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1074, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 956, "src": "3963:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 1075, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3975:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1076, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3984:3:10", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "3975:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3963:24:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1078, "nodeType": "ExpressionStatement", "src": "3963:24:10"}, {"expression": {"id": 1085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1079, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "4006:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1082, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4008:9:10", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "4006:11:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1083, "indexExpression": {"id": 1081, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "4018:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4006:23:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1084, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "4032:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "4006:34:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1086, "nodeType": "ExpressionStatement", "src": "4006:34:10"}, {"id": 1090, "nodeType": "UncheckedBlock", "src": "4059:54:10", "statements": [{"expression": {"id": 1088, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "4091:3:10", "subExpression": {"id": 1087, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "4093:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1089, "nodeType": "ExpressionStatement", "src": "4091:3:10"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 966, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2743:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 967, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "2747:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2743:19:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1092, "initializationExpression": {"assignments": [964], "declarations": [{"constant": false, "id": 964, "mutability": "mutable", "name": "i", "nameLocation": "2740:1:10", "nodeType": "VariableDeclaration", "scope": 1092, "src": "2732:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 963, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2732:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 965, "nodeType": "VariableDeclarationStatement", "src": "2732:9:10"}, "nodeType": "ForStatement", "src": "2727:1400:10"}, {"expression": {"arguments": [{"id": 1096, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 961, "src": "4166:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1097, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4180:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1098, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4183:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "4180:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4180:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1093, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4140:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1095, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4148:17:10", "memberName": "updateClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 706, "src": "4140:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4140:68:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1101, "nodeType": "ExpressionStatement", "src": "4140:68:10"}, {"expression": {"arguments": [{"hexValue": "74727565", "id": 1105, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4236:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"hexValue": "31", "id": 1106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4242:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "expression": {"id": 1102, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4223:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4226:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "4223:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4223:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1108, "nodeType": "ExpressionStatement", "src": "4223:21:10"}]}}, {"expression": {"id": 1113, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "4265:24:10", "subExpression": {"expression": {"id": 1111, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4267:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1112, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4275:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "4267:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1114, "nodeType": "ExpressionStatement", "src": "4265:24:10"}, {"condition": {"arguments": [{"id": 1117, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 956, "src": "4357:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1118, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4383:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1119, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4386:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "4383:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1120, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4414:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1121, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4417:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "4414:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1122, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4465:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1123, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4468:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "4465:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1115, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4317:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1116, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4325:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "4317:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1124, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4317:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1129, "nodeType": "IfStatement", "src": "4300:274:10", "trueBody": {"id": 1128, "nodeType": "Block", "src": "4521:53:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1125, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "4542:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4542:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1127, "nodeType": "RevertStatement", "src": "4535:28:10"}]}}, {"expression": {"id": 1138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1130, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "4584:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1133, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4586:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "4584:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1134, "indexExpression": {"id": 1132, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "4595:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4584:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1135, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4612:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1136, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4620:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "4612:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1137, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4612:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "4584:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1139, "nodeType": "ExpressionStatement", "src": "4584:53:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1140, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 776, "src": "4652:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4662:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4652:11:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1150, "nodeType": "IfStatement", "src": "4648:65:10", "trueBody": {"id": 1149, "nodeType": "Block", "src": "4665:48:10", "statements": [{"expression": {"arguments": [{"id": 1146, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 776, "src": "4695:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1143, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "4679:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4687:7:10", "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 2339, "src": "4679:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1147, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4679:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1148, "nodeType": "ExpressionStatement", "src": "4679:23:10"}]}}, {"eventCall": {"arguments": [{"expression": {"id": 1152, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4743:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4747:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "4743:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1154, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "4755:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 1155, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 769, "src": "4768:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 1156, "name": "sharesData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 774, "src": "4779:10:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 1157, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4791:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1151, "name": "ValidatorAdded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2212, "src": "4728:14:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,bytes memory,bytes memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4728:71:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1159, "nodeType": "EmitStatement", "src": "4723:76:10"}]}, "functionSelector": "06e8fb9c", "id": 1161, "implemented": true, "kind": "function", "modifiers": [], "name": "registerValidator", "nameLocation": "731:17:10", "nodeType": "FunctionDefinition", "overrides": {"id": 781, "nodeType": "OverrideSpecifier", "overrides": [], "src": "926:8:10"}, "parameters": {"id": 780, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 769, "mutability": "mutable", "name": "publicKey", "nameLocation": "773:9:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "758:24:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 768, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "758:5:10", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 772, "mutability": "mutable", "name": "operatorIds", "nameLocation": "808:11:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "792:27:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 770, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "792:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 771, "nodeType": "ArrayTypeName", "src": "792:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 774, "mutability": "mutable", "name": "sharesData", "nameLocation": "844:10:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "829:25:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 773, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "829:5:10", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 776, "mutability": "mutable", "name": "amount", "nameLocation": "872:6:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "864:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 775, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "864:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 779, "mutability": "mutable", "name": "cluster", "nameLocation": "903:7:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "888:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 778, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 777, "name": "Cluster", "nameLocations": ["888:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "888:7:10"}, "referencedDeclaration": 1906, "src": "888:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "748:168:10"}, "returnParameters": {"id": 782, "nodeType": "ParameterList", "parameters": [], "src": "935:0:10"}, "scope": 1851, "src": "722:4084:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2147], "body": {"id": 1318, "nodeType": "Block", "src": "4966:1370:10", "statements": [{"assignments": [1175], "declarations": [{"constant": false, "id": 1175, "mutability": "mutable", "name": "s", "nameLocation": "4996:1:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "4976:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1174, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1173, "name": "StorageData", "nameLocations": ["4976:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "4976:11:10"}, "referencedDeclaration": 2024, "src": "4976:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1179, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1176, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "5000:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5011:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "5000:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1178, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5000:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4976:41:10"}, {"assignments": [1181], "declarations": [{"constant": false, "id": 1181, "mutability": "mutable", "name": "hashedValidator", "nameLocation": "5036:15:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5028:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1180, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5028:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1190, "initialValue": {"arguments": [{"arguments": [{"id": 1185, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1163, "src": "5081:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"expression": {"id": 1186, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5092:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5096:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "5092:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 1183, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5064:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 1184, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5068:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "5064:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5064:39:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1182, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5054:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5054:50:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5028:76:10"}, {"assignments": [1192], "declarations": [{"constant": false, "id": 1192, "mutability": "mutable", "name": "mask", "nameLocation": "5123:4:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5115:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1191, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5115:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1201, "initialValue": {"id": 1200, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "~", "prefix": true, "src": "5130:20:10", "subExpression": {"arguments": [{"arguments": [{"hexValue": "31", "id": 1197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5147:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 1196, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5139:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1195, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5139:7:10", "typeDescriptions": {}}}, "id": 1198, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5139:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1194, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5131:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 1193, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5131:7:10", "typeDescriptions": {}}}, "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5131:19:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5115:35:10"}, {"assignments": [1203], "declarations": [{"constant": false, "id": 1203, "mutability": "mutable", "name": "validatorData", "nameLocation": "5200:13:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5192:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1202, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5192:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1208, "initialValue": {"baseExpression": {"expression": {"id": 1204, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "5216:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1205, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5218:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "5216:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1207, "indexExpression": {"id": 1206, "name": "hashedValidator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "5231:15:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5216:31:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5192:55:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1209, "name": "validatorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "5262:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5287:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1211, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5279:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 1210, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5279:7:10", "typeDescriptions": {}}}, "id": 1213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5279:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5262:27:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1219, "nodeType": "IfStatement", "src": "5258:88:10", "trueBody": {"id": 1218, "nodeType": "Block", "src": "5291:55:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1215, "name": "ValidatorDoesNotExist", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1926, "src": "5312:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5312:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1217, "nodeType": "RevertStatement", "src": "5305:30:10"}]}}, {"assignments": [1221], "declarations": [{"constant": false, "id": 1221, "mutability": "mutable", "name": "hashedOperatorIds", "nameLocation": "5364:17:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5356:25:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1220, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5356:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1230, "initialValue": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"id": 1225, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "5411:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}], "expression": {"id": 1223, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5394:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 1224, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5398:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "5394:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 1226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5394:29:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1222, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5384:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5384:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"id": 1228, "name": "mask", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "5427:4:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5384:47:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5356:75:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1231, "name": "validatorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "5484:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"id": 1232, "name": "mask", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "5500:4:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5484:20:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 1234, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5483:22:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 1235, "name": "hashedOperatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1221, "src": "5509:17:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5483:43:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1241, "nodeType": "IfStatement", "src": "5479:168:10", "trueBody": {"id": 1240, "nodeType": "Block", "src": "5528:119:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1237, "name": "IncorrectValidatorState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1928, "src": "5611:23:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1238, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5611:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1239, "nodeType": "RevertStatement", "src": "5604:32:10"}]}}, {"assignments": [1243], "declarations": [{"constant": false, "id": 1243, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "5665:13:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5657:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1242, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5657:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1251, "initialValue": {"arguments": [{"expression": {"id": 1246, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5711:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5715:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "5711:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1248, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "5723:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1249, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "5736:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1244, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "5681:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1245, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5689:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "5681:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5681:57:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5657:81:10"}, {"id": 1289, "nodeType": "Block", "src": "5749:356:10", "statements": [{"condition": {"expression": {"id": 1252, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "5767:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5775:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "5767:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1288, "nodeType": "IfStatement", "src": "5763:332:10", "trueBody": {"id": 1287, "nodeType": "Block", "src": "5783:312:10", "statements": [{"assignments": [1255, null], "declarations": [{"constant": false, "id": 1255, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "5809:12:10", "nodeType": "VariableDeclaration", "scope": 1287, "src": "5802:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1254, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5802:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, null], "id": 1263, "initialValue": {"arguments": [{"id": 1258, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "5855:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"hexValue": "66616c7365", "id": 1259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5868:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "31", "id": 1260, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5875:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, {"id": 1261, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "5878:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1256, "name": "OperatorLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "5827:11:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_OperatorLib_$2644_$", "typeString": "type(library OperatorLib)"}}, "id": 1257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5839:15:10", "memberName": "updateOperators", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "5827:27:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bool_$_t_uint32_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_uint64_$_t_uint64_$", "typeString": "function (uint64[] memory,bool,uint32,struct StorageData storage pointer) returns (uint64,uint64)"}}, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5827:53:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", "typeString": "tuple(uint64,uint64)"}}, "nodeType": "VariableDeclarationStatement", "src": "5801:79:10"}, {"assignments": [1266], "declarations": [{"constant": false, "id": 1266, "mutability": "mutable", "name": "sp", "nameLocation": "5922:2:10", "nodeType": "VariableDeclaration", "scope": 1287, "src": "5898:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1265, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1264, "name": "StorageProtocol", "nameLocations": ["5898:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "5898:15:10"}, "referencedDeclaration": 2854, "src": "5898:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1270, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1267, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "5927:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5946:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "5927:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5927:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5898:54:10"}, {"expression": {"arguments": [{"id": 1274, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1255, "src": "5997:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1275, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "6011:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1276, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6014:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "6011:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1277, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6011:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1271, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "5971:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1273, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5979:17:10", "memberName": "updateClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 706, "src": "5971:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5971:68:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1279, "nodeType": "ExpressionStatement", "src": "5971:68:10"}, {"expression": {"arguments": [{"hexValue": "66616c7365", "id": 1283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6071:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "31", "id": 1284, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6078:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "expression": {"id": 1280, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "6058:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1282, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6061:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "6058:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1285, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6058:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1286, "nodeType": "ExpressionStatement", "src": "6058:22:10"}]}}]}, {"expression": {"id": 1292, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": true, "src": "6115:24:10", "subExpression": {"expression": {"id": 1290, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "6117:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1291, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6125:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "6117:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1293, "nodeType": "ExpressionStatement", "src": "6115:24:10"}, {"expression": {"id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "6150:38:10", "subExpression": {"baseExpression": {"expression": {"id": 1294, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "6157:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1295, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6159:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "6157:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1297, "indexExpression": {"id": 1296, "name": "hashedValidator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "6172:15:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6157:31:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1299, "nodeType": "ExpressionStatement", "src": "6150:38:10"}, {"expression": {"id": 1308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1300, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "6199:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1303, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6201:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "6199:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1304, "indexExpression": {"id": 1302, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "6210:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6199:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1305, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "6227:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1306, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6235:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "6227:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6227:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "6199:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1309, "nodeType": "ExpressionStatement", "src": "6199:53:10"}, {"eventCall": {"arguments": [{"expression": {"id": 1311, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6285:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6289:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "6285:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1313, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "6297:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1314, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1163, "src": "6310:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 1315, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "6321:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1310, "name": "ValidatorRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2225, "src": "6268:16:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,bytes memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1316, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6268:61:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1317, "nodeType": "EmitStatement", "src": "6263:66:10"}]}, "functionSelector": "12b3fc19", "id": 1319, "implemented": true, "kind": "function", "modifiers": [], "name": "removeValidator", "nameLocation": "4821:15:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1171, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4957:8:10"}, "parameters": {"id": 1170, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1163, "mutability": "mutable", "name": "publicKey", "nameLocation": "4861:9:10", "nodeType": "VariableDeclaration", "scope": 1319, "src": "4846:24:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1162, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4846:5:10", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1166, "mutability": "mutable", "name": "operatorIds", "nameLocation": "4898:11:10", "nodeType": "VariableDeclaration", "scope": 1319, "src": "4880:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1164, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4880:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1165, "nodeType": "ArrayTypeName", "src": "4880:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1169, "mutability": "mutable", "name": "cluster", "nameLocation": "4934:7:10", "nodeType": "VariableDeclaration", "scope": 1319, "src": "4919:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1168, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1167, "name": "Cluster", "nameLocations": ["4919:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "4919:7:10"}, "referencedDeclaration": 1906, "src": "4919:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "4836:111:10"}, "returnParameters": {"id": 1172, "nodeType": "ParameterList", "parameters": [], "src": "4966:0:10"}, "scope": 1851, "src": "4812:1524:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2159], "body": {"id": 1477, "nodeType": "Block", "src": "6454:1429:10", "statements": [{"assignments": [1333], "declarations": [{"constant": false, "id": 1333, "mutability": "mutable", "name": "s", "nameLocation": "6484:1:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6464:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1332, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1331, "name": "StorageData", "nameLocations": ["6464:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "6464:11:10"}, "referencedDeclaration": 2024, "src": "6464:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1337, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1334, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "6488:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6499:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "6488:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6488:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6464:41:10"}, {"assignments": [1339], "declarations": [{"constant": false, "id": 1339, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "6524:13:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6516:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1338, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6516:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1346, "initialValue": {"arguments": [{"id": 1342, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "6570:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1343, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1324, "src": "6584:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 1344, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "6597:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1340, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6540:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6548:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "6540:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1345, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6540:59:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "6516:83:10"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1347, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6609:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1349, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6617:30:10", "memberName": "validateClusterIsNotLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 612, "src": "6609:38:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure"}}, "id": 1350, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6609:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1351, "nodeType": "ExpressionStatement", "src": "6609:40:10"}, {"assignments": [1354], "declarations": [{"constant": false, "id": 1354, "mutability": "mutable", "name": "sp", "nameLocation": "6684:2:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6660:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1353, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1352, "name": "StorageProtocol", "nameLocations": ["6660:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "6660:15:10"}, "referencedDeclaration": 2854, "src": "6660:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1358, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1355, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "6689:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6708:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "6689:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1357, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6689:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6660:54:10"}, {"assignments": [1360, 1362], "declarations": [{"constant": false, "id": 1360, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "6733:12:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6726:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1359, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6726:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1362, "mutability": "mutable", "name": "burnRate", "nameLocation": "6754:8:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6747:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1361, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6747:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1371, "initialValue": {"arguments": [{"id": 1365, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1324, "src": "6807:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"hexValue": "66616c7365", "id": 1366, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6832:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"expression": {"id": 1367, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6851:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6859:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "6851:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"id": 1369, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "6887:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1363, "name": "OperatorLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "6766:11:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_OperatorLib_$2644_$", "typeString": "type(library OperatorLib)"}}, "id": 1364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6778:15:10", "memberName": "updateOperators", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "6766:27:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bool_$_t_uint32_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_uint64_$_t_uint64_$", "typeString": "function (uint64[] memory,bool,uint32,struct StorageData storage pointer) returns (uint64,uint64)"}}, "id": 1370, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6766:132:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", "typeString": "tuple(uint64,uint64)"}}, "nodeType": "VariableDeclarationStatement", "src": "6725:173:10"}, {"expression": {"arguments": [{"id": 1375, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1360, "src": "6931:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1376, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "6945:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1377, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6948:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "6945:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6945:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1372, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6909:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1374, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6917:13:10", "memberName": "updateBalance", "nodeType": "MemberAccess", "referencedDeclaration": 545, "src": "6909:21:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6909:64:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1380, "nodeType": "ExpressionStatement", "src": "6909:64:10"}, {"assignments": [1382], "declarations": [{"constant": false, "id": 1382, "mutability": "mutable", "name": "balanceLiquidatable", "nameLocation": "6992:19:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6984:27:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1381, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6984:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1383, "nodeType": "VariableDeclarationStatement", "src": "6984:27:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1399, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1384, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "7039:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 1385, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7055:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7059:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "7055:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7039:26:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"id": 1398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "7081:194:10", "subExpression": {"arguments": [{"id": 1390, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1362, "src": "7122:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1391, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7148:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1392, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7151:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "7148:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1393, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7179:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1394, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7182:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "7179:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1395, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7230:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1396, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7233:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "7230:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1388, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7082:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1389, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7090:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "7082:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7082:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7039:236:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1404, "nodeType": "IfStatement", "src": "7022:320:10", "trueBody": {"id": 1403, "nodeType": "Block", "src": "7286:56:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1400, "name": "ClusterNotLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1930, "src": "7307:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1401, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7307:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1402, "nodeType": "RevertStatement", "src": "7300:31:10"}]}}, {"expression": {"arguments": [{"hexValue": "66616c7365", "id": 1408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7365:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"expression": {"id": 1409, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7372:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1410, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7380:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "7372:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}], "expression": {"id": 1405, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7352:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1407, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7355:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "7352:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7352:43:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1412, "nodeType": "ExpressionStatement", "src": "7352:43:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1413, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7410:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1414, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7418:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "7410:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1415, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7429:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7410:20:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1429, "nodeType": "IfStatement", "src": "7406:121:10", "trueBody": {"id": 1428, "nodeType": "Block", "src": "7432:95:10", "statements": [{"expression": {"id": 1420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1417, "name": "balanceLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1382, "src": "7446:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 1418, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7468:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1419, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7476:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "7468:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7446:37:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1421, "nodeType": "ExpressionStatement", "src": "7446:37:10"}, {"expression": {"id": 1426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1422, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7497:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7505:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "7497:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7515:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7497:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1427, "nodeType": "ExpressionStatement", "src": "7497:19:10"}]}}, {"expression": {"id": 1434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1430, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7536:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1432, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7544:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "7536:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1433, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7552:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7536:17:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1435, "nodeType": "ExpressionStatement", "src": "7536:17:10"}, {"expression": {"id": 1440, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1436, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7563:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1438, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7571:15:10", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "7563:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7589:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7563:27:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1441, "nodeType": "ExpressionStatement", "src": "7563:27:10"}, {"expression": {"id": 1446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1442, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7600:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1444, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7608:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "7600:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 1445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7617:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "7600:22:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1447, "nodeType": "ExpressionStatement", "src": "7600:22:10"}, {"expression": {"id": 1456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1448, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "7633:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1451, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7635:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "7633:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1452, "indexExpression": {"id": 1450, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1339, "src": "7644:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7633:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1453, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7661:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7669:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "7661:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7661:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "7633:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1457, "nodeType": "ExpressionStatement", "src": "7633:53:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1458, "name": "balanceLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1382, "src": "7701:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1459, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7724:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7701:24:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1470, "nodeType": "IfStatement", "src": "7697:111:10", "trueBody": {"id": 1469, "nodeType": "Block", "src": "7727:81:10", "statements": [{"expression": {"arguments": [{"expression": {"id": 1464, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7765:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7769:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "7765:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1466, "name": "balanceLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1382, "src": "7777:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1461, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "7741:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1463, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7749:15:10", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2312, "src": "7741:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1467, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7741:56:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1468, "nodeType": "ExpressionStatement", "src": "7741:56:10"}]}}, {"eventCall": {"arguments": [{"id": 1472, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "7841:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1473, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1324, "src": "7855:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 1474, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7868:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1471, "name": "ClusterLiquidated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "7823:17:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1475, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7823:53:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1476, "nodeType": "EmitStatement", "src": "7818:58:10"}]}, "functionSelector": "bf0f2fb2", "id": 1478, "implemented": true, "kind": "function", "modifiers": [], "name": "liquidate", "nameLocation": "6351:9:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1329, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6445:8:10"}, "parameters": {"id": 1328, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1321, "mutability": "mutable", "name": "clusterOwner", "nameLocation": "6369:12:10", "nodeType": "VariableDeclaration", "scope": 1478, "src": "6361:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1320, "name": "address", "nodeType": "ElementaryTypeName", "src": "6361:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1324, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6399:11:10", "nodeType": "VariableDeclaration", "scope": 1478, "src": "6383:27:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1322, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6383:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1323, "nodeType": "ArrayTypeName", "src": "6383:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1327, "mutability": "mutable", "name": "cluster", "nameLocation": "6427:7:10", "nodeType": "VariableDeclaration", "scope": 1478, "src": "6412:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1326, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1325, "name": "Cluster", "nameLocations": ["6412:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "6412:7:10"}, "referencedDeclaration": 1906, "src": "6412:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "6360:75:10"}, "returnParameters": {"id": 1330, "nodeType": "ParameterList", "parameters": [], "src": "6454:0:10"}, "scope": 1851, "src": "6342:1541:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2171], "body": {"id": 1610, "nodeType": "Block", "src": "7998:1169:10", "statements": [{"assignments": [1492], "declarations": [{"constant": false, "id": 1492, "mutability": "mutable", "name": "s", "nameLocation": "8028:1:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8008:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1491, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1490, "name": "StorageData", "nameLocations": ["8008:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "8008:11:10"}, "referencedDeclaration": 2024, "src": "8008:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1496, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1493, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "8032:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8043:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "8032:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1495, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8032:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "8008:41:10"}, {"assignments": [1498], "declarations": [{"constant": false, "id": 1498, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "8068:13:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8060:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1497, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8060:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1506, "initialValue": {"arguments": [{"expression": {"id": 1501, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8114:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8118:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "8114:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1503, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "8126:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1504, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "8139:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1499, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8084:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8092:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "8084:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8084:57:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "8060:81:10"}, {"condition": {"expression": {"id": 1507, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8155:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1508, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8163:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "8155:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1512, "nodeType": "IfStatement", "src": "8151:50:10", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1509, "name": "ClusterAlreadyEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1936, "src": "8178:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8178:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1511, "nodeType": "RevertStatement", "src": "8171:30:10"}}, {"assignments": [1515], "declarations": [{"constant": false, "id": 1515, "mutability": "mutable", "name": "sp", "nameLocation": "8236:2:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8212:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1514, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1513, "name": "StorageProtocol", "nameLocations": ["8212:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "8212:15:10"}, "referencedDeclaration": 2854, "src": "8212:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1519, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1516, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "8241:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8260:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "8241:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1518, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8241:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "8212:54:10"}, {"assignments": [1521, 1523], "declarations": [{"constant": false, "id": 1521, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "8285:12:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8278:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1520, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8278:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1523, "mutability": "mutable", "name": "burnRate", "nameLocation": "8306:8:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8299:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1522, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8299:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1532, "initialValue": {"arguments": [{"id": 1526, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "8359:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"hexValue": "74727565", "id": 1527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8384:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"expression": {"id": 1528, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8402:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1529, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8410:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "8402:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"id": 1530, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "8438:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1524, "name": "OperatorLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "8318:11:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_OperatorLib_$2644_$", "typeString": "type(library OperatorLib)"}}, "id": 1525, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8330:15:10", "memberName": "updateOperators", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "8318:27:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bool_$_t_uint32_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_uint64_$_t_uint64_$", "typeString": "function (uint64[] memory,bool,uint32,struct StorageData storage pointer) returns (uint64,uint64)"}}, "id": 1531, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8318:131:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", "typeString": "tuple(uint64,uint64)"}}, "nodeType": "VariableDeclarationStatement", "src": "8277:172:10"}, {"expression": {"id": 1537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1533, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8460:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1535, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8468:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "8460:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1536, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "8479:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8460:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1538, "nodeType": "ExpressionStatement", "src": "8460:25:10"}, {"expression": {"id": 1543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1539, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8495:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1541, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8503:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "8495:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 1542, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8512:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "8495:21:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1544, "nodeType": "ExpressionStatement", "src": "8495:21:10"}, {"expression": {"id": 1549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1545, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8526:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1547, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8534:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "8526:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1548, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "8542:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "8526:28:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1550, "nodeType": "ExpressionStatement", "src": "8526:28:10"}, {"expression": {"id": 1557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1551, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8564:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1553, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8572:15:10", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "8564:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1554, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8590:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1555, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8593:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "8590:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8590:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "8564:53:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1558, "nodeType": "ExpressionStatement", "src": "8564:53:10"}, {"expression": {"arguments": [{"hexValue": "74727565", "id": 1562, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8641:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"expression": {"id": 1563, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8647:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1564, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8655:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "8647:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}], "expression": {"id": 1559, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8628:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1561, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8631:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "8628:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1565, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8628:42:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1566, "nodeType": "ExpressionStatement", "src": "8628:42:10"}, {"condition": {"arguments": [{"id": 1569, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "8738:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1570, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8764:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1571, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8767:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "8764:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1572, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8795:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1573, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8798:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "8795:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1574, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8846:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1575, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8849:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "8846:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1567, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8698:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1568, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8706:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "8698:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8698:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1581, "nodeType": "IfStatement", "src": "8681:274:10", "trueBody": {"id": 1580, "nodeType": "Block", "src": "8902:53:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1577, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "8923:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1578, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8923:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1579, "nodeType": "RevertStatement", "src": "8916:28:10"}]}}, {"expression": {"id": 1590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1582, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "8965:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1585, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8967:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "8965:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1586, "indexExpression": {"id": 1584, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "8976:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8965:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1587, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8993:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1588, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9001:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "8993:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1589, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8993:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "8965:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1591, "nodeType": "ExpressionStatement", "src": "8965:53:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1592, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "9033:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9042:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "9033:10:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1602, "nodeType": "IfStatement", "src": "9029:64:10", "trueBody": {"id": 1601, "nodeType": "Block", "src": "9045:48:10", "statements": [{"expression": {"arguments": [{"id": 1598, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "9075:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1595, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "9059:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1597, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9067:7:10", "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 2339, "src": "9059:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1599, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9059:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1600, "nodeType": "ExpressionStatement", "src": "9059:23:10"}]}}, {"eventCall": {"arguments": [{"expression": {"id": 1604, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9127:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9131:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "9127:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1606, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "9139:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1607, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "9152:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1603, "name": "ClusterReactivated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2245, "src": "9108:18:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9108:52:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1609, "nodeType": "EmitStatement", "src": "9103:57:10"}]}, "functionSelector": "5fec6dd0", "id": 1611, "implemented": true, "kind": "function", "modifiers": [], "name": "reactivate", "nameLocation": "7898:10:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1488, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7989:8:10"}, "parameters": {"id": 1487, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1481, "mutability": "mutable", "name": "operatorIds", "nameLocation": "7927:11:10", "nodeType": "VariableDeclaration", "scope": 1611, "src": "7909:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1479, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7909:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1480, "nodeType": "ArrayTypeName", "src": "7909:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1483, "mutability": "mutable", "name": "amount", "nameLocation": "7948:6:10", "nodeType": "VariableDeclaration", "scope": 1611, "src": "7940:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1482, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7940:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1486, "mutability": "mutable", "name": "cluster", "nameLocation": "7971:7:10", "nodeType": "VariableDeclaration", "scope": 1611, "src": "7956:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1485, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1484, "name": "Cluster", "nameLocations": ["7956:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "7956:7:10"}, "referencedDeclaration": 1906, "src": "7956:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "7908:71:10"}, "returnParameters": {"id": 1489, "nodeType": "ParameterList", "parameters": [], "src": "7998:0:10"}, "scope": 1851, "src": "7889:1278:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2185], "body": {"id": 1670, "nodeType": "Block", "src": "9339:362:10", "statements": [{"assignments": [1627], "declarations": [{"constant": false, "id": 1627, "mutability": "mutable", "name": "s", "nameLocation": "9369:1:10", "nodeType": "VariableDeclaration", "scope": 1670, "src": "9349:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1626, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1625, "name": "StorageData", "nameLocations": ["9349:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "9349:11:10"}, "referencedDeclaration": 2024, "src": "9349:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1631, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1628, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "9373:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9384:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "9373:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1630, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9373:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "9349:41:10"}, {"assignments": [1633], "declarations": [{"constant": false, "id": 1633, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "9409:13:10", "nodeType": "VariableDeclaration", "scope": 1670, "src": "9401:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1632, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9401:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1640, "initialValue": {"arguments": [{"id": 1636, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1613, "src": "9455:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1637, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1616, "src": "9469:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1638, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "9482:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1634, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9425:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1635, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9433:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "9425:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9425:59:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "9401:83:10"}, {"expression": {"id": 1645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1641, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9495:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1643, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "9503:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "9495:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1644, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1618, "src": "9514:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9495:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1646, "nodeType": "ExpressionStatement", "src": "9495:25:10"}, {"expression": {"id": 1655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1647, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "9531:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1650, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9533:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "9531:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1651, "indexExpression": {"id": 1649, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1633, "src": "9542:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9531:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1652, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9559:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1653, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9567:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "9559:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1654, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9559:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "9531:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1656, "nodeType": "ExpressionStatement", "src": "9531:53:10"}, {"expression": {"arguments": [{"id": 1660, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1618, "src": "9611:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1657, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "9595:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9603:7:10", "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 2339, "src": "9595:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9595:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1662, "nodeType": "ExpressionStatement", "src": "9595:23:10"}, {"eventCall": {"arguments": [{"id": 1664, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1613, "src": "9651:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1665, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1616, "src": "9665:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1666, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1618, "src": "9678:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1667, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9686:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1663, "name": "ClusterDeposited", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2269, "src": "9634:16:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_uint256_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,uint256,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1668, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9634:60:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1669, "nodeType": "EmitStatement", "src": "9629:65:10"}]}, "functionSelector": "bc26e7e5", "id": 1671, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "9182:7:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1623, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9330:8:10"}, "parameters": {"id": 1622, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1613, "mutability": "mutable", "name": "clusterOwner", "nameLocation": "9207:12:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9199:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1612, "name": "address", "nodeType": "ElementaryTypeName", "src": "9199:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1616, "mutability": "mutable", "name": "operatorIds", "nameLocation": "9247:11:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9229:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1614, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "9229:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1615, "nodeType": "ArrayTypeName", "src": "9229:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1618, "mutability": "mutable", "name": "amount", "nameLocation": "9276:6:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9268:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1617, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9268:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1621, "mutability": "mutable", "name": "cluster", "nameLocation": "9307:7:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9292:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1620, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1619, "name": "Cluster", "nameLocations": ["9292:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "9292:7:10"}, "referencedDeclaration": 1906, "src": "9292:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "9189:131:10"}, "returnParameters": {"id": 1624, "nodeType": "ParameterList", "parameters": [], "src": "9339:0:10"}, "scope": 1851, "src": "9173:528:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2197], "body": {"id": 1849, "nodeType": "Block", "src": "9814:1686:10", "statements": [{"assignments": [1685], "declarations": [{"constant": false, "id": 1685, "mutability": "mutable", "name": "s", "nameLocation": "9844:1:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "9824:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1684, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1683, "name": "StorageData", "nameLocations": ["9824:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "9824:11:10"}, "referencedDeclaration": 2024, "src": "9824:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1689, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1686, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "9848:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9859:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "9848:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1688, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9848:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "9824:41:10"}, {"assignments": [1691], "declarations": [{"constant": false, "id": 1691, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "9884:13:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "9876:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1690, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9876:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1699, "initialValue": {"arguments": [{"expression": {"id": 1694, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9930:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9934:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "9930:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1696, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "9942:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1697, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1685, "src": "9955:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1692, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "9900:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1693, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9908:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "9900:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1698, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9900:57:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "9876:81:10"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1700, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "9967:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1702, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9975:30:10", "memberName": "validateClusterIsNotLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 612, "src": "9967:38:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure"}}, "id": 1703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9967:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1704, "nodeType": "ExpressionStatement", "src": "9967:40:10"}, {"assignments": [1707], "declarations": [{"constant": false, "id": 1707, "mutability": "mutable", "name": "sp", "nameLocation": "10042:2:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "10018:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1706, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1705, "name": "StorageProtocol", "nameLocations": ["10018:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "10018:15:10"}, "referencedDeclaration": 2854, "src": "10018:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1711, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1708, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "10047:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10066:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "10047:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10047:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "10018:54:10"}, {"assignments": [1713], "declarations": [{"constant": false, "id": 1713, "mutability": "mutable", "name": "burnRate", "nameLocation": "10090:8:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "10083:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1712, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "10083:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1714, "nodeType": "VariableDeclarationStatement", "src": "10083:15:10"}, {"condition": {"expression": {"id": 1715, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10112:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1716, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10120:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "10112:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1785, "nodeType": "IfStatement", "src": "10108:733:10", "trueBody": {"id": 1784, "nodeType": "Block", "src": "10128:713:10", "statements": [{"assignments": [1718], "declarations": [{"constant": false, "id": 1718, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "10149:12:10", "nodeType": "VariableDeclaration", "scope": 1784, "src": "10142:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1717, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "10142:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1719, "nodeType": "VariableDeclarationStatement", "src": "10142:19:10"}, {"id": 1774, "nodeType": "Block", "src": "10175:573:10", "statements": [{"assignments": [1721], "declarations": [{"constant": false, "id": 1721, "mutability": "mutable", "name": "operatorsLength", "nameLocation": "10201:15:10", "nodeType": "VariableDeclaration", "scope": 1774, "src": "10193:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1720, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10193:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1724, "initialValue": {"expression": {"id": 1722, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "10219:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, "id": 1723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10231:6:10", "memberName": "length", "nodeType": "MemberAccess", "src": "10219:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "10193:44:10"}, {"body": {"id": 1772, "nodeType": "Block", "src": "10294:440:10", "statements": [{"assignments": [1733], "declarations": [{"constant": false, "id": 1733, "mutability": "mutable", "name": "operator", "nameLocation": "10333:8:10", "nodeType": "VariableDeclaration", "scope": 1772, "src": "10316:25:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1732, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1731, "name": "Operator", "nameLocations": ["10316:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "10316:8:10"}, "referencedDeclaration": 1880, "src": "10316:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1742, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1734, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "10344:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10355:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "10344:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10344:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1737, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10362:9:10", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "10344:27:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1741, "indexExpression": {"baseExpression": {"id": 1738, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "10372:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, "id": 1740, "indexExpression": {"id": 1739, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1726, "src": "10384:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10372:14:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10344:43:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "10316:71:10"}, {"expression": {"id": 1761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1743, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1718, "src": "10409:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1744, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10449:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1745, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10458:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "10449:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1746, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10467:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "10449:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1759, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1749, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "10507:5:10", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10513:6:10", "memberName": "number", "nodeType": "MemberAccess", "src": "10507:12:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1748, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10500:6:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1747, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "10500:6:10", "typeDescriptions": {}}}, "id": 1751, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10500:20:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 1752, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10523:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1753, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10532:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "10523:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1754, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10541:5:10", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "10523:23:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "10500:46:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1756, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10499:48:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1757, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10574:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1758, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10583:3:10", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "10574:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10499:87:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10449:137:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10409:177:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1762, "nodeType": "ExpressionStatement", "src": "10409:177:10"}, {"expression": {"id": 1766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1763, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1713, "src": "10608:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 1764, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10620:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1765, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10629:3:10", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "10620:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10608:24:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1767, "nodeType": "ExpressionStatement", "src": "10608:24:10"}, {"id": 1771, "nodeType": "UncheckedBlock", "src": "10654:62:10", "statements": [{"expression": {"id": 1769, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "10690:3:10", "subExpression": {"id": 1768, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1726, "src": "10692:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1770, "nodeType": "ExpressionStatement", "src": "10690:3:10"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1728, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1726, "src": "10271:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1729, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1721, "src": "10275:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10271:19:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1773, "initializationExpression": {"assignments": [1726], "declarations": [{"constant": false, "id": 1726, "mutability": "mutable", "name": "i", "nameLocation": "10268:1:10", "nodeType": "VariableDeclaration", "scope": 1773, "src": "10260:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1725, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10260:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1727, "nodeType": "VariableDeclarationStatement", "src": "10260:9:10"}, "nodeType": "ForStatement", "src": "10255:479:10"}]}, {"expression": {"arguments": [{"id": 1778, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1718, "src": "10788:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1779, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "10802:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1780, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10805:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "10802:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1781, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10802:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1775, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10762:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1777, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10770:17:10", "memberName": "updateClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 706, "src": "10762:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1782, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10762:68:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1783, "nodeType": "ExpressionStatement", "src": "10762:68:10"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1786, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10854:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1787, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10862:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "10854:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1788, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "10872:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10854:24:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1793, "nodeType": "IfStatement", "src": "10850:58:10", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1790, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "10887:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1791, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10887:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1792, "nodeType": "RevertStatement", "src": "10880:28:10"}}, {"expression": {"id": 1798, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1794, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10919:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1796, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "10927:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "10919:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1797, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "10938:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10919:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1799, "nodeType": "ExpressionStatement", "src": "10919:25:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1800, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10972:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1801, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10980:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "10972:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1802, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11002:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1803, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11010:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "11002:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1804, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11028:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11002:27:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10972:57:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"arguments": [{"id": 1809, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1713, "src": "11085:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1810, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "11111:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1811, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11114:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "11111:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1812, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "11142:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11145:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "11142:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1814, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "11193:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1815, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11196:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "11193:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1807, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11045:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1808, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11053:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "11045:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11045:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10972:266:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1822, "nodeType": "IfStatement", "src": "10955:347:10", "trueBody": {"id": 1821, "nodeType": "Block", "src": "11249:53:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1818, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "11270:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1819, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11270:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1820, "nodeType": "RevertStatement", "src": "11263:28:10"}]}}, {"expression": {"id": 1831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1823, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1685, "src": "11312:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1826, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11314:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "11312:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1827, "indexExpression": {"id": 1825, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1691, "src": "11323:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11312:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1828, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11340:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1829, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11348:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "11340:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1830, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11340:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "11312:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1832, "nodeType": "ExpressionStatement", "src": "11312:53:10"}, {"expression": {"arguments": [{"expression": {"id": 1836, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11400:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11404:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "11400:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1838, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "11412:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1833, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "11376:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11384:15:10", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2312, "src": "11376:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11376:43:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1840, "nodeType": "ExpressionStatement", "src": "11376:43:10"}, {"eventCall": {"arguments": [{"expression": {"id": 1842, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11452:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11456:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "11452:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1844, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "11464:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1845, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "11477:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1846, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11485:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1841, "name": "ClusterWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2257, "src": "11435:16:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_uint256_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,uint256,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1847, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11435:58:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1848, "nodeType": "EmitStatement", "src": "11430:63:10"}]}, "functionSelector": "686e682c", "id": 1850, "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "9716:8:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1681, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9805:8:10"}, "parameters": {"id": 1680, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1674, "mutability": "mutable", "name": "operatorIds", "nameLocation": "9743:11:10", "nodeType": "VariableDeclaration", "scope": 1850, "src": "9725:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1672, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "9725:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1673, "nodeType": "ArrayTypeName", "src": "9725:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1676, "mutability": "mutable", "name": "amount", "nameLocation": "9764:6:10", "nodeType": "VariableDeclaration", "scope": 1850, "src": "9756:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1675, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9756:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1679, "mutability": "mutable", "name": "cluster", "nameLocation": "9787:7:10", "nodeType": "VariableDeclaration", "scope": 1850, "src": "9772:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1678, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1677, "name": "Cluster", "nameLocations": ["9772:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "9772:7:10"}, "referencedDeclaration": 1906, "src": "9772:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "9724:71:10"}, "returnParameters": {"id": 1682, "nodeType": "ParameterList", "parameters": [], "src": "9814:0:10"}, "scope": 1851, "src": "9707:1793:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1852, "src": "347:11155:10", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:11458:10"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2955]}, "id": 2956, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2879, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2880, "nodeType": "StructuredDocumentation", "src": "131:70:11", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2955, "linearizedBaseContracts": [2955], "name": "IERC20", "nameLocation": "212:6:11", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2881, "nodeType": "StructuredDocumentation", "src": "225:158:11", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2889, "name": "Transfer", "nameLocation": "394:8:11", "nodeType": "EventDefinition", "parameters": {"id": 2888, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2883, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:11", "nodeType": "VariableDeclaration", "scope": 2889, "src": "403:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2882, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2885, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:11", "nodeType": "VariableDeclaration", "scope": 2889, "src": "425:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2884, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2887, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:11", "nodeType": "VariableDeclaration", "scope": 2889, "src": "445:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2886, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:11"}, "src": "388:72:11"}, {"anonymous": false, "documentation": {"id": 2890, "nodeType": "StructuredDocumentation", "src": "466:148:11", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2898, "name": "Approval", "nameLocation": "625:8:11", "nodeType": "EventDefinition", "parameters": {"id": 2897, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2892, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:11", "nodeType": "VariableDeclaration", "scope": 2898, "src": "634:21:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2891, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2894, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:11", "nodeType": "VariableDeclaration", "scope": 2898, "src": "657:23:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2893, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2896, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:11", "nodeType": "VariableDeclaration", "scope": 2898, "src": "682:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2895, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:11"}, "src": "619:78:11"}, {"documentation": {"id": 2899, "nodeType": "StructuredDocumentation", "src": "703:66:11", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2904, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2900, "nodeType": "ParameterList", "parameters": [], "src": "794:2:11"}, "returnParameters": {"id": 2903, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2902, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2904, "src": "820:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2901, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:11"}, "scope": 2955, "src": "774:55:11", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2905, "nodeType": "StructuredDocumentation", "src": "835:72:11", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2912, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2908, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2907, "mutability": "mutable", "name": "account", "nameLocation": "939:7:11", "nodeType": "VariableDeclaration", "scope": 2912, "src": "931:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2906, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:11"}, "returnParameters": {"id": 2911, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2910, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2912, "src": "971:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2909, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:11"}, "scope": 2955, "src": "912:68:11", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2913, "nodeType": "StructuredDocumentation", "src": "986:202:11", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2922, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2918, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2915, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:11", "nodeType": "VariableDeclaration", "scope": 2922, "src": "1211:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2914, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2917, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:11", "nodeType": "VariableDeclaration", "scope": 2922, "src": "1223:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2916, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:11"}, "returnParameters": {"id": 2921, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2920, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2922, "src": "1257:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2919, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:11"}, "scope": 2955, "src": "1193:70:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2923, "nodeType": "StructuredDocumentation", "src": "1269:264:11", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2932, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2928, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2925, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:11", "nodeType": "VariableDeclaration", "scope": 2932, "src": "1557:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2924, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2927, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:11", "nodeType": "VariableDeclaration", "scope": 2932, "src": "1572:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2926, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:11"}, "returnParameters": {"id": 2931, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2930, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2932, "src": "1612:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2929, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:11"}, "scope": 2955, "src": "1538:83:11", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2933, "nodeType": "StructuredDocumentation", "src": "1627:642:11", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2942, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2938, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2935, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:11", "nodeType": "VariableDeclaration", "scope": 2942, "src": "2291:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2934, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2937, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:11", "nodeType": "VariableDeclaration", "scope": 2942, "src": "2308:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2936, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:11"}, "returnParameters": {"id": 2941, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2940, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2942, "src": "2342:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2939, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:11"}, "scope": 2955, "src": "2274:74:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2943, "nodeType": "StructuredDocumentation", "src": "2354:287:11", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2954, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2950, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2945, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:11", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2668:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2944, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2947, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:11", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2682:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2946, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2949, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:11", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2694:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2948, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:11"}, "returnParameters": {"id": 2953, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2952, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2728:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2951, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:11"}, "scope": 2955, "src": "2646:88:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2956, "src": "202:2534:11", "usedErrors": []}], "src": "106:2631:11"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [3029]}, "id": 3030, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2957, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:12"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2958, "nodeType": "StructuredDocumentation", "src": "112:311:12", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 3029, "linearizedBaseContracts": [3029], "name": "Counters", "nameLocation": "432:8:12", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2961, "members": [{"constant": false, "id": 2960, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:12", "nodeType": "VariableDeclaration", "scope": 2961, "src": "786:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2959, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:12", "nodeType": "StructDefinition", "scope": 3029, "src": "447:374:12", "visibility": "public"}, {"body": {"id": 2972, "nodeType": "Block", "src": "901:38:12", "statements": [{"expression": {"expression": {"id": 2969, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2964, "src": "918:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2970, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "918:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2968, "id": 2971, "nodeType": "Return", "src": "911:21:12"}]}, "id": 2973, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2965, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2964, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:12", "nodeType": "VariableDeclaration", "scope": 2973, "src": "844:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2963, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2962, "name": "Counter", "nameLocations": ["844:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "844:7:12"}, "referencedDeclaration": 2961, "src": "844:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:12"}, "returnParameters": {"id": 2968, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2967, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2973, "src": "892:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2966, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:12"}, "scope": 3029, "src": "827:112:12", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2986, "nodeType": "Block", "src": "998:70:12", "statements": [{"id": 2985, "nodeType": "UncheckedBlock", "src": "1008:54:12", "statements": [{"expression": {"id": 2983, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2979, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "1032:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2981, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1032:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2982, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2984, "nodeType": "ExpressionStatement", "src": "1032:19:12"}]}]}, "id": 2987, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2977, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2976, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:12", "nodeType": "VariableDeclaration", "scope": 2987, "src": "964:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2975, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2974, "name": "Counter", "nameLocations": ["964:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "964:7:12"}, "referencedDeclaration": 2961, "src": "964:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:12"}, "returnParameters": {"id": 2978, "nodeType": "ParameterList", "parameters": [], "src": "998:0:12"}, "scope": 3029, "src": "945:123:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3014, "nodeType": "Block", "src": "1127:176:12", "statements": [{"assignments": [2994], "declarations": [{"constant": false, "id": 2994, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:12", "nodeType": "VariableDeclaration", "scope": 3014, "src": "1137:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2993, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2997, "initialValue": {"expression": {"id": 2995, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2990, "src": "1153:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2996, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1153:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:12"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3001, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2999, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2994, "src": "1185:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3000, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 3002, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:12", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2998, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:12", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3003, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3004, "nodeType": "ExpressionStatement", "src": "1177:49:12"}, {"id": 3013, "nodeType": "UncheckedBlock", "src": "1236:61:12", "statements": [{"expression": {"id": 3011, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 3005, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2990, "src": "1260:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 3007, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1260:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3008, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2994, "src": "1277:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 3009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3012, "nodeType": "ExpressionStatement", "src": "1260:26:12"}]}]}, "id": 3015, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2991, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2990, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:12", "nodeType": "VariableDeclaration", "scope": 3015, "src": "1093:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2989, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2988, "name": "Counter", "nameLocations": ["1093:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "1093:7:12"}, "referencedDeclaration": 2961, "src": "1093:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:12"}, "returnParameters": {"id": 2992, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:12"}, "scope": 3029, "src": "1074:229:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3027, "nodeType": "Block", "src": "1358:35:12", "statements": [{"expression": {"id": 3025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 3021, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3018, "src": "1368:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 3023, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1368:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 3024, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3026, "nodeType": "ExpressionStatement", "src": "1368:18:12"}]}, "id": 3028, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:12", "nodeType": "FunctionDefinition", "parameters": {"id": 3019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3018, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:12", "nodeType": "VariableDeclaration", "scope": 3028, "src": "1324:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 3017, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3016, "name": "Counter", "nameLocations": ["1324:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "1324:7:12"}, "referencedDeclaration": 2961, "src": "1324:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:12"}, "returnParameters": {"id": 3020, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:12"}, "scope": 3029, "src": "1309:84:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 3030, "src": "424:971:12", "usedErrors": []}], "src": "87:1309:12"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ClusterLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Clusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVClusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol:ISSVClusters": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Deposits tokens into a cluster"}, "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Liquidates a cluster"}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}, "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Withdraws tokens from a cluster"}}, "notice": null}, "devdoc": {"methods": {"deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster where the deposit will be made", "operatorIds": "Array of IDs of operators managing the cluster", "owner": "The owner of the cluster"}, "return": null}, "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster to be liquidated", "operatorIds": "Array of IDs of operators managing the cluster", "owner": "The owner of the cluster"}, "return": null}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}, "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster where the withdrawal will be made", "operatorIds": "Array of IDs of operators managing the cluster", "tokenAmount": "Amount of SSV tokens to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ClusterLib.sol:ClusterLib": {"srcmap": "164:2774:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "164:2774:2:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220402d809ddc32f9ad38430cdcb4ee56bf84a2819f2cd896f287a19f299f59f8ca64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220402d809ddc32f9ad38430cdcb4ee56bf84a2819f2cd896f287a19f299f59f8ca64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:3:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol:OperatorLib": {"srcmap": "199:2119:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "199:2119:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Clusters.sol:Clusters": {"srcmap": "137:3963:9:-:0;;;563:1;539:25;;211:16;;;;;;;;;;137:3963;;;;;;", "srcmap-runtime": "137:3963:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3805:242;;;:::i;:::-;;722:4084:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4812:1524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7889:1278;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4053:45:9;;;:::i;:::-;;9707:1793:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9173:528;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6342:1541;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;287:27:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3538:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2544:988;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3805:242;3862:21;3886:17;:15;:17::i;:::-;3862:41;;3919:8;3914:127;3937:14;:21;;;;3933:1;:25;;;3914:127;;;4027:1;4019:10;;3986:1;:10;;:29;3997:14;4012:1;3997:17;;;;;;;;;;:::i;:::-;;;;;;;;;;3986:29;;;;;;;;;;;;:43;3979:51;;;;:::i;:::-;;3960:3;;;;;:::i;:::-;;;;3914:127;;;;3852:195;3805:242::o;722:4084:10:-;945:21;969:17;:15;:17::i;:::-;945:41;;996:26;1025:25;:23;:25::i;:::-;996:54;;1061:23;1087:11;:18;1061:44;;550:1;1150:38;;:15;:38;:96;;;;604:2;1208:38;;:15;:38;1150:96;:162;;;;1311:1;662;1266:41;;:15;:41;;;;:::i;:::-;:46;;1150:162;1129:264;;;1352:26;;;;;;;;;;;;;;1129:264;713:2;1411:37;;:9;;:16;;:37;1407:74;;1457:24;;;;;;;;;;;;;;1407:74;1496:16;1542:9;;1553:10;1525:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1515:50;;;;;;1496:69;;1620:1;1612:10;;1584:1;:14;;:24;1599:8;1584:24;;;;;;;;;;;;:38;1580:108;;1649:24;;;;;;;;;;;;;;1580:108;1797:4;1772:11;1755:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;1745:40;;;;;;1737:49;;:65;1729:74;;1702:1;:14;;:24;1717:8;1702:24;;;;;;;;;;;:101;;;;1115:715;1839:21;1890:10;1902:11;1873:41;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1863:52;;;;;;1839:76;;1940:19;1962:1;:10;;:25;1973:13;1962:25;;;;;;;;;;;;1940:47;;2028:1;2020:10;;2005:11;:25;2001:576;;2101:1;2075:7;:22;;;:27;;;;:79;;;;2153:1;2126:7;:23;;;:28;;;;2075:79;:121;;;;2195:1;2178:7;:13;;;:18;;;;2075:121;:165;;;;2239:1;2220:7;:15;;;:20;;2075:165;:204;;;;2265:7;:14;;;2264:15;2075:204;2050:319;;;2327:23;;;;;;;;;;;;;;2050:319;2001:576;;;2408:25;:7;:23;:25::i;:::-;2393:11;:40;2389:188;;2460:23;;;;;;;;;;;;;;2389:188;2522:40;:7;:38;:40::i;:::-;2001:576;1926:661;2616:6;2597:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;2633:15;2663:7;:14;;;2659:1596;;;2693:19;2732:9;2727:1400;2747:15;2743:1;:19;2727:1400;;;2784:17;2804:11;2816:1;2804:14;;;;;;;;:::i;:::-;;;;;;;;2784:34;;2870:15;2866:1;2862;:5;;;;:::i;:::-;:23;2858:333;;;2930:11;2946:1;2942;:5;;;;:::i;:::-;2930:18;;;;;;;;:::i;:::-;;;;;;;;2917:31;;:10;:31;;;2913:256;;;2987:23;;;;;;;;;;;;;;2913:256;3061:11;3077:1;3073;:5;;;;:::i;:::-;3061:18;;;;;;;;:::i;:::-;;;;;;;;3047:32;;:10;:32;;;3043:126;;3118:24;;;;;;;;;;;;;;3043:126;2858:333;3227:24;3254:1;:11;;:23;3266:10;3254:23;;;;;;;;;;;;;;;3227:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:1;3299:8;:17;;;:23;;;:28;;;3295:104;;3358:22;;;;;;;;;;;;;;3295:104;3420:8;:20;;;3416:280;;;3464:19;3486:1;:20;;:32;3507:10;3486:32;;;;;;;;;;;;;;;;;;;;;;;;;3464:54;;3567:1;3544:25;;:11;:25;;;;:54;;;;;3588:10;3573:25;;:11;:25;;;;3544:54;3540:138;;;3633:22;;;;;;;;;;;;;;3540:138;3442:254;3416:280;3713:25;:8;:23;:25::i;:::-;3788:2;:29;;;;;;;;;;;;3760:57;;3762:8;:23;;3760:25;;;;;:::i;:::-;;;;;;;;;;:57;;;3756:133;;;3848:22;;;;;;;;;;;;;;3756:133;3922:8;:17;;;:23;;;3906:39;;;;;:::i;:::-;;;3975:8;:12;;;3963:24;;;;;:::i;:::-;;;4032:8;4006:1;:11;;:23;4018:10;4006:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4091:3;;;;;2766:1361;;2727:1400;;;;4140:68;4166:12;4180:27;:2;:25;:27::i;:::-;4140:7;:25;;:68;;;;;:::i;:::-;4223:21;4236:4;4242:1;4223:2;:12;;:21;;;;;:::i;:::-;2679:1576;2659:1596;4267:7;:22;;4265:24;;;;;:::i;:::-;;;;;;;;;;;4317:193;4357:8;4383:2;:13;;;;;;;;;;;;4414:2;:33;;;;;;;;;;;;4465:2;:31;;;;;;;;;;;;4317:7;:22;;:193;;;;;;;:::i;:::-;4300:274;;;4542:21;;;;;;;;;;;;;;4300:274;4612:25;:7;:23;:25::i;:::-;4584:1;:10;;:25;4595:13;4584:25;;;;;;;;;;;:53;;;;4662:1;4652:6;:11;4648:65;;4679:23;4695:6;4679:15;:23::i;:::-;4648:65;4743:10;4728:71;;;4755:11;4768:9;;4779:10;;4791:7;4728:71;;;;;;;;;;;:::i;:::-;;;;;;;;935:3871;;;;;722:4084;;;;;;;:::o;4812:1524::-;4976:21;5000:17;:15;:17::i;:::-;4976:41;;5028:23;5081:9;;5092:10;5064:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5054:50;;;;;;5028:76;;5115:12;5147:1;5131:19;;5130:20;5115:35;;5192:21;5216:1;:14;;:31;5231:15;5216:31;;;;;;;;;;;;5192:55;;5287:1;5279:10;;5262:13;:27;5258:88;;5312:23;;;;;;;;;;;;;;5258:88;5356:25;5427:4;5411:11;;5394:29;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5384:40;;;;;;:47;5356:75;;5509:17;5500:4;5484:13;:20;5483:43;5479:168;;5611:25;;;;;;;;;;;;;;5479:168;5657:21;5681:57;5711:10;5723:11;;5681:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:1;5681:7;:29;;:57;;;;;;:::i;:::-;5657:81;;5767:7;:14;;;5763:332;;;5802:19;5827:53;5855:11;;5827:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5868:5;5875:1;5878;5827:27;:53::i;:::-;5801:79;;;5898:26;5927:25;:23;:25::i;:::-;5898:54;;5971:68;5997:12;6011:27;:2;:25;:27::i;:::-;5971:7;:25;;:68;;;;;:::i;:::-;6058:22;6071:5;6078:1;6058:2;:12;;:22;;;;;:::i;:::-;5783:312;;5763:332;6117:7;:22;;6115:24;;;;;:::i;:::-;;;;;;;;;;;6157:1;:14;;:31;6172:15;6157:31;;;;;;;;;;;6150:38;;;6227:25;:7;:23;:25::i;:::-;6199:1;:10;;:25;6210:13;6199:25;;;;;;;;;;;:53;;;;6285:10;6268:61;;;6297:11;;6310:9;;6321:7;6268:61;;;;;;;;;;:::i;:::-;;;;;;;;4966:1370;;;;;;4812:1524;;;;;:::o;7889:1278::-;8008:21;8032:17;:15;:17::i;:::-;8008:41;;8060:21;8084:57;8114:10;8126:11;;8084:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8139:1;8084:7;:29;;:57;;;;;;:::i;:::-;8060:81;;8155:7;:14;;;8151:50;;;8178:23;;;;;;;;;;;;;;8151:50;8212:26;8241:25;:23;:25::i;:::-;8212:54;;8278:19;8299:15;8318:131;8359:11;;8318:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8384:4;8402:7;:22;;;8438:1;8318:27;:131::i;:::-;8277:172;;;;8479:6;8460:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;8512:4;8495:7;:14;;:21;;;;;;;;;;;8542:12;8526:7;:13;;:28;;;;;;;;;;;8590:27;:2;:25;:27::i;:::-;8564:7;:23;;:53;;;;;;;;;;;8628:42;8641:4;8647:7;:22;;;8628:2;:12;;:42;;;;;:::i;:::-;8698:193;8738:8;8764:2;:13;;;;;;;;;;;;8795:2;:33;;;;;;;;;;;;8846:2;:31;;;;;;;;;;;;8698:7;:22;;:193;;;;;;;:::i;:::-;8681:274;;;8923:21;;;;;;;;;;;;;;8681:274;8993:25;:7;:23;:25::i;:::-;8965:1;:10;;:25;8976:13;8965:25;;;;;;;;;;;:53;;;;9042:1;9033:6;:10;9029:64;;;9059:23;9075:6;9059:15;:23::i;:::-;9029:64;9127:10;9108:52;;;9139:11;;9152:7;9108:52;;;;;;;;:::i;:::-;;;;;;;;7998:1169;;;;;7889:1278;;;;:::o;4053:45:9:-;:::o;9707:1793:10:-;9824:21;9848:17;:15;:17::i;:::-;9824:41;;9876:21;9900:57;9930:10;9942:11;;9900:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9955:1;9900:7;:29;;:57;;;;;;:::i;:::-;9876:81;;9967:40;:7;:38;:40::i;:::-;10018:26;10047:25;:23;:25::i;:::-;10018:54;;10083:15;10112:7;:14;;;10108:733;;;10142:19;10193:23;10219:11;;:18;;10193:44;;10260:9;10255:479;10275:15;10271:1;:19;10255:479;;;10316:25;10344:17;:15;:17::i;:::-;:27;;:43;10372:11;;10384:1;10372:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10344:43;;;;;;;;;;;;;;;10316:71;;10574:8;:12;;;;;;;;;;;;10523:8;:17;;:23;;;;;;;;;;;;10500:46;;10507:12;10500:46;;;;:::i;:::-;10499:87;;;;:::i;:::-;10449:8;:17;;:23;;;;;;;;;;;;:137;;;;:::i;:::-;10409:177;;;;;:::i;:::-;;;10620:8;:12;;;;;;;;;;;;10608:24;;;;;:::i;:::-;;;10690:3;;;;;10294:440;10255:479;;;;10175:573;10762:68;10788:12;10802:27;:2;:25;:27::i;:::-;10762:7;:25;;:68;;;;;:::i;:::-;10128:713;10108:733;10872:6;10854:7;:15;;;:24;10850:58;;;10887:21;;;;;;;;;;;;;;10850:58;10938:6;10919:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;10972:7;:14;;;:57;;;;;11028:1;11002:7;:22;;;:27;;;;10972:57;:266;;;;;11045:193;11085:8;11111:2;:13;;;;;;;;;;;;11142:2;:33;;;;;;;;;;;;11193:2;:31;;;;;;;;;;;;11045:7;:22;;:193;;;;;;;:::i;:::-;10972:266;10955:347;;;11270:21;;;;;;;;;;;;;;10955:347;11340:25;:7;:23;:25::i;:::-;11312:1;:10;;:25;11323:13;11312:25;;;;;;;;;;;:53;;;;11376:43;11400:10;11412:6;11376:23;:43::i;:::-;11452:10;11435:58;;;11464:11;;11477:6;11485:7;11435:58;;;;;;;;;:::i;:::-;;;;;;;;9814:1686;;;;9707:1793;;;;:::o;9173:528::-;9349:21;9373:17;:15;:17::i;:::-;9349:41;;9401:21;9425:59;9455:12;9469:11;;9425:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9482:1;9425:7;:29;;:59;;;;;;:::i;:::-;9401:83;;9514:6;9495:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;9559;:7;:23;:25::i;:::-;9531:1;:10;;:25;9542:13;9531:25;;;;;;;;;;;:53;;;;9595:23;9611:6;9595:15;:23::i;:::-;9651:12;9634:60;;;9665:11;;9678:6;9686:7;9634:60;;;;;;;;;:::i;:::-;;;;;;;;9339:362;;9173:528;;;;;:::o;6342:1541::-;6464:21;6488:17;:15;:17::i;:::-;6464:41;;6516:21;6540:59;6570:12;6584:11;6597:1;6540:7;:29;;:59;;;;;;:::i;:::-;6516:83;;6609:40;:7;:38;:40::i;:::-;6660:26;6689:25;:23;:25::i;:::-;6660:54;;6726:19;6747:15;6766:132;6807:11;6832:5;6851:7;:22;;;6887:1;6766:27;:132::i;:::-;6725:173;;;;6909:64;6931:12;6945:27;:2;:25;:27::i;:::-;6909:7;:21;;:64;;;;;:::i;:::-;6984:27;7055:10;7039:26;;:12;:26;;;;:236;;;;;7082:193;7122:8;7148:2;:13;;;;;;;;;;;;7179:2;:33;;;;;;;;;;;;7230:2;:31;;;;;;;;;;;;7082:7;:22;;:193;;;;;;;:::i;:::-;7081:194;7039:236;7022:320;;;7307:24;;;;;;;;;;;;;;7022:320;7352:43;7365:5;7372:7;:22;;;7352:2;:12;;:43;;;;;:::i;:::-;7429:1;7410:7;:15;;;:20;7406:121;;7468:7;:15;;;7446:37;;7515:1;7497:7;:15;;:19;;;;;7406:121;7552:1;7536:7;:13;;:17;;;;;;;;;;;7589:1;7563:7;:23;;:27;;;;;;;;;;;7617:5;7600:7;:14;;:22;;;;;;;;;;;7661:25;:7;:23;:25::i;:::-;7633:1;:10;;:25;7644:13;7633:25;;;;;;;;;;;:53;;;;7724:1;7701:19;:24;7697:111;;7741:56;7765:10;7777:19;7741:23;:56::i;:::-;7697:111;7841:12;7823:53;;;7855:11;7868:7;7823:53;;;;;;;:::i;:::-;;;;;;;;6454:1429;;;;;;6342:1541;;;:::o;287:27:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3538:261::-;3696:10;:17;;;;3675:11;:39;;;;:::i;:::-;3661:53;;3725:4;:20;;;3746:10;3757:11;3746:23;;;;;;;;;;:::i;:::-;;;;;;;;;3771:11;;3784:7;3725:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3538:261;;;;:::o;2544:988::-;2662:21;2686:17;:15;:17::i;:::-;2662:41;;2714:23;2740:20;:18;:20::i;:::-;2714:46;;2770:28;2801:22;:20;:22::i;:::-;2770:53;;2834:22;2886:10;2898:12;2869:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2859:53;;;;;;2834:78;;2923:19;2945:1;:10;;:26;2956:14;2945:26;;;;;;;;;;;;2923:48;;3008:1;3000:10;;2985:11;:25;2981:307;;3051:1;3026:7;:22;;:26;;;;;;;;;;;3092:1;3066:7;:23;;:27;;;;;;;;;;;3123:1;3107:7;:13;;:17;;;;;;;;;;;3156:1;3138:7;:15;;:19;;;;;3188:4;3171:7;:14;;:21;;;;;;;;;;;2981:307;;;3252:25;:7;:23;:25::i;:::-;3223:1;:10;;:26;3234:14;3223:26;;;;;;;;;;;:54;;;;2981:307;3302:4;:22;;;3325:10;3337:12;3351:10;;3363:6;3371:7;3302:77;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3298:228;;3509:5;3502:13;;;;:::i;:::-;;3298:228;;;3394:10;3410;3394:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3435:14;3455;3435:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3298:228;2652:880;;;;;2544:988;;;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;2531:405:2:-;2619:7;2722;:22;;;2766:7;:23;;;2811:7;:13;;;2846:7;:15;;;2883:7;:14;;;2684:231;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2657:272;;;;;;2638:291;;2531:405;;;:::o;1329:176::-;1438:7;:14;;;1433:65;;1461:37;;;;;;;;;;;;;;1433:65;1329:176;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;342:204:5:-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;2189:336:2:-;2362:60;2376:7;2385:12;2399:22;2362:13;:60::i;:::-;2448:12;2432:7;:13;;:28;;;;;;;;;;;2496:22;2470:7;:23;;:48;;;;;;;;;;;2189:336;;;:::o;1332:399:5:-;1455:21;1473:2;1455:17;:21::i;:::-;1491:22;1486:239;;1553:19;1529:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1486:239;;;1641:16;1593:64;;1618:19;1594:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1593:64;;;1589:136;;;1680:34;;;;;;;;;;;;;;1589:136;1486:239;1332:399;;;:::o;687:636:2:-;932:17;991:1;965:7;:22;;;:27;;;961:356;;1030:37;:28;:35;;;:37::i;:::-;1012:7;:15;;;:55;1008:72;;;1076:4;1069:11;;;;1008:72;1094:27;1215:7;:22;;;1124:113;;1185:10;1174:8;:21;;;;:::i;:::-;1124:30;:72;;;;:::i;:::-;:113;;;;:::i;:::-;1094:143;;1277:29;:20;:27;;;:29::i;:::-;1259:7;:15;;;:47;1252:54;;;;;961:356;687:636;;;;;;;;:::o;505:205:3:-;562:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:36;;;599:10;619:4;626:6;562:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;557:147;;656:37;;;;;;;;;;;;;;557:147;505:205;:::o;1511:672:2:-;1710:7;1729:21;1780:5;1787:11;1763:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1753:47;;;;;;1729:71;;1810:25;1838:24;1854:7;1838:15;:24::i;:::-;1810:52;;1873:19;1895:1;:10;;:25;1906:13;1895:25;;;;;;;;;;;;1873:47;;1957:1;1949:10;;1934:11;:25;1930:216;;1982:38;;;;;;;;;;;;;;1930:216;2056:17;2041:11;:32;2037:109;;2096:39;;;;;;;;;;;;;;2037:109;2163:13;2156:20;;;;;1511:672;;;;;;:::o;1257:1059:4:-;1447:19;1468:15;1500:9;1495:815;1515:11;:18;1511:1;:22;1495:815;;;1551:17;1571:11;1583:1;1571:14;;;;;;;;:::i;:::-;;;;;;;;1551:34;;1599:41;1643:1;:11;;:23;1655:10;1643:23;;;;;;;;;;;;;;;1599:67;;1711:1;1684:8;:17;;:23;;;;;;;;;;;;:28;;;1680:507;;1732:26;1749:8;1732:16;:26::i;:::-;1781:22;1776:355;;1854:19;1827:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1776:355;;;1974:25;:23;:25::i;:::-;:52;;;;;;;;;;;;1923:103;;1951:19;1924:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1923:103;;;1898:233;;;2074:38;;;;;;;;;;;;;;1898:233;1776:355;2160:8;:12;;;;;;;;;;;;2148:24;;;;;:::i;:::-;;;1680:507;2217:8;:17;;:23;;;;;;;;;;;;2201:39;;;;;:::i;:::-;;;2282:3;;;;;1537:773;;1495:815;;;;1257:1059;;;;;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;220:461:2:-;385:17;464:7;:22;;;405:81;;437:7;:23;;;412:22;:48;;;;:::i;:::-;405:81;;;;:::i;:::-;385:101;;496:12;565:10;540:7;:22;;;511:51;;523:7;:13;;;512:8;:24;;;;:::i;:::-;511:51;;;;:::i;:::-;:64;;;;:::i;:::-;496:79;;620:7;:15;;;603:14;:5;:12;;;:14::i;:::-;:32;:71;;660:14;:5;:12;;;:14::i;:::-;642:7;:15;;;:32;;;;:::i;:::-;603:71;;;638:1;603:71;585:7;:15;;:89;;;;;375:306;;220:461;;;:::o;571:368:9:-;619:12;643:24;680:2;670:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;643:40;;698:6;693:195;714:2;710:1;:6;693:195;;;859:3;816:5;;823:15;840:10;852:1;799:55;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;789:66;;;;;;784:72;;:78;;;;:::i;:::-;754:123;;737:11;749:1;737:14;;;;;;;;:::i;:::-;;;;;:140;;;;;;;;;;;718:3;;;;;:::i;:::-;;;;693:195;;;;897:5;;:7;;;;;;;;;:::i;:::-;;;;;;921:11;914:18;;;571:368;:::o;945:1169::-;995:27;1034:18;368:1;1056:107;;1091:15;1108:10;1120:5;;1074:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1064:63;;;;;;1056:72;;:107;;;;:::i;:::-;1034:130;;1174:14;1208:1;1195:10;:14;;;;:::i;:::-;1191:1;:18;;;;:::i;:::-;1174:35;;1264:5;;:7;;;;;;;;;:::i;:::-;;;;;;1309:6;1296:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1282:34;;1331:9;1326:754;1350:6;1346:1;:10;1326:754;;;1377:15;1406:11;1431:207;1452:5;;:7;;;;;;;;;:::i;:::-;;;;;;1537:19;:17;:19::i;:::-;1526:30;;1584:22;1597:8;1584:12;:22::i;:::-;1583:23;1574:32;;1630:6;1629:7;1431:207;;1715:9;1727:1;1715:13;;1742:237;1753:1;1749;:5;:38;;;;;1779:8;1758:29;;:11;1774:1;1770;:5;;;;:::i;:::-;1758:18;;;;;;;;:::i;:::-;;;;;;;;:29;;;1749:38;1742:237;;;1815:11;:18;1811:1;:22;1807:137;;;1874:11;1890:1;1886;:5;;;;:::i;:::-;1874:18;;;;;;;;:::i;:::-;;;;;;;;1857:11;1869:1;1857:14;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;1807:137;1961:3;;;;;:::i;:::-;;;;1742:237;;;2009:8;1992:11;2004:1;1992:14;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;1363:717;;;1358:3;;;;;:::i;:::-;;;;1326:754;;;;2089:18;;945:1169;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;627:363:4:-;715:19;788:8;:12;;;;;;;;;;;;761:8;:17;;:23;;;;;;;;;;;;745:12;738:46;;;;:::i;:::-;737:63;;;;;;:::i;:::-;715:85;;838:12;811:8;:17;;:23;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;904:8;:23;;;;;;;;;;;;889:38;;:12;:38;;;;:::i;:::-;860:8;:17;;:25;;;:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;970:12;937:8;:17;;:23;;;:46;;;;;;;;;;;;;;;;;;705:285;627:363;:::o;2120:169:9:-;2167:6;2274:7;2234:15;2251:10;2263:5;;2217:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2207:63;;;;;;2199:72;;:82;;;;:::i;:::-;2185:97;;2120:169;:::o;2295:243::-;2351:4;2372:9;2384:1;2372:13;;2367:143;2391:11;:18;;;;2387:1;:22;2367:143;;;2452:2;2434:20;;:11;2446:1;2434:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;2430:70;;2481:4;2474:11;;;;;2430:70;2411:3;;;;;:::i;:::-;;;;2367:143;;;;2526:5;2519:12;;2295:243;;;;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:75:13:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:102::-;1315:6;1366:2;1362:7;1357:2;1350:5;1346:14;1342:28;1332:38;;1274:102;;;:::o;1382:180::-;1430:77;1427:1;1420:88;1527:4;1524:1;1517:15;1551:4;1548:1;1541:15;1568:281;1651:27;1673:4;1651:27;:::i;:::-;1643:6;1639:40;1781:6;1769:10;1766:22;1745:18;1733:10;1730:34;1727:62;1724:88;;;1792:18;;:::i;:::-;1724:88;1832:10;1828:2;1821:22;1611:238;1568:281;;:::o;1855:129::-;1889:6;1916:20;;:::i;:::-;1906:30;;1945:33;1973:4;1965:6;1945:33;:::i;:::-;1855:129;;;:::o;1990:310::-;2066:4;2156:18;2148:6;2145:30;2142:56;;;2178:18;;:::i;:::-;2142:56;2228:4;2220:6;2216:17;2208:25;;2288:4;2282;2278:15;2270:23;;1990:310;;;:::o;2306:101::-;2342:7;2382:18;2375:5;2371:30;2360:41;;2306:101;;;:::o;2413:120::-;2485:23;2502:5;2485:23;:::i;:::-;2478:5;2475:34;2465:62;;2523:1;2520;2513:12;2465:62;2413:120;:::o;2539:137::-;2584:5;2622:6;2609:20;2600:29;;2638:32;2664:5;2638:32;:::i;:::-;2539:137;;;;:::o;2698:707::-;2793:5;2818:80;2834:63;2890:6;2834:63;:::i;:::-;2818:80;:::i;:::-;2809:89;;2918:5;2947:6;2940:5;2933:21;2981:4;2974:5;2970:16;2963:23;;3034:4;3026:6;3022:17;3014:6;3010:30;3063:3;3055:6;3052:15;3049:122;;;3082:79;;:::i;:::-;3049:122;3197:6;3180:219;3214:6;3209:3;3206:15;3180:219;;;3289:3;3318:36;3350:3;3338:10;3318:36;:::i;:::-;3313:3;3306:49;3384:4;3379:3;3375:14;3368:21;;3256:143;3240:4;3235:3;3231:14;3224:21;;3180:219;;;3184:21;2799:606;;2698:707;;;;;:::o;3427:368::-;3497:5;3546:3;3539:4;3531:6;3527:17;3523:27;3513:122;;3554:79;;:::i;:::-;3513:122;3671:6;3658:20;3696:93;3785:3;3777:6;3770:4;3762:6;3758:17;3696:93;:::i;:::-;3687:102;;3503:292;3427:368;;;;:::o;3801:77::-;3838:7;3867:5;3856:16;;3801:77;;;:::o;3884:122::-;3957:24;3975:5;3957:24;:::i;:::-;3950:5;3947:35;3937:63;;3996:1;3993;3986:12;3937:63;3884:122;:::o;4012:139::-;4058:5;4096:6;4083:20;4074:29;;4112:33;4139:5;4112:33;:::i;:::-;4012:139;;;;:::o;4157:117::-;4266:1;4263;4256:12;4403:93;4439:7;4479:10;4472:5;4468:22;4457:33;;4403:93;;;:::o;4502:120::-;4574:23;4591:5;4574:23;:::i;:::-;4567:5;4564:34;4554:62;;4612:1;4609;4602:12;4554:62;4502:120;:::o;4628:137::-;4673:5;4711:6;4698:20;4689:29;;4727:32;4753:5;4727:32;:::i;:::-;4628:137;;;;:::o;4771:90::-;4805:7;4848:5;4841:13;4834:21;4823:32;;4771:90;;;:::o;4867:116::-;4937:21;4952:5;4937:21;:::i;:::-;4930:5;4927:32;4917:60;;4973:1;4970;4963:12;4917:60;4867:116;:::o;4989:133::-;5032:5;5070:6;5057:20;5048:29;;5086:30;5110:5;5086:30;:::i;:::-;4989:133;;;;:::o;5166:1079::-;5240:5;5284:4;5272:9;5267:3;5263:19;5259:30;5256:117;;;5292:79;;:::i;:::-;5256:117;5391:21;5407:4;5391:21;:::i;:::-;5382:30;;5481:1;5521:48;5565:3;5556:6;5545:9;5541:22;5521:48;:::i;:::-;5514:4;5507:5;5503:16;5496:74;5422:159;5651:2;5692:48;5736:3;5727:6;5716:9;5712:22;5692:48;:::i;:::-;5685:4;5678:5;5674:16;5667:74;5591:161;5812:2;5853:48;5897:3;5888:6;5877:9;5873:22;5853:48;:::i;:::-;5846:4;5839:5;5835:16;5828:74;5762:151;5974:2;6015:46;6057:3;6048:6;6037:9;6033:22;6015:46;:::i;:::-;6008:4;6001:5;5997:16;5990:72;5923:150;6135:3;6177:49;6222:3;6213:6;6202:9;6198:22;6177:49;:::i;:::-;6170:4;6163:5;6159:16;6152:75;6083:155;5166:1079;;;;:::o;6251:1565::-;6417:6;6425;6433;6441;6449;6457;6465;6514:3;6502:9;6493:7;6489:23;6485:33;6482:120;;;6521:79;;:::i;:::-;6482:120;6669:1;6658:9;6654:17;6641:31;6699:18;6691:6;6688:30;6685:117;;;6721:79;;:::i;:::-;6685:117;6834:64;6890:7;6881:6;6870:9;6866:22;6834:64;:::i;:::-;6816:82;;;;6612:296;6975:2;6964:9;6960:18;6947:32;7006:18;6998:6;6995:30;6992:117;;;7028:79;;:::i;:::-;6992:117;7133:77;7202:7;7193:6;7182:9;7178:22;7133:77;:::i;:::-;7123:87;;6918:302;7287:2;7276:9;7272:18;7259:32;7318:18;7310:6;7307:30;7304:117;;;7340:79;;:::i;:::-;7304:117;7453:64;7509:7;7500:6;7489:9;7485:22;7453:64;:::i;:::-;7435:82;;;;7230:297;7566:2;7592:53;7637:7;7628:6;7617:9;7613:22;7592:53;:::i;:::-;7582:63;;7537:118;7694:3;7721:78;7791:7;7782:6;7771:9;7767:22;7721:78;:::i;:::-;7711:88;;7665:144;6251:1565;;;;;;;;;;:::o;7838:567::-;7910:8;7920:6;7970:3;7963:4;7955:6;7951:17;7947:27;7937:122;;7978:79;;:::i;:::-;7937:122;8091:6;8078:20;8068:30;;8121:18;8113:6;8110:30;8107:117;;;8143:79;;:::i;:::-;8107:117;8257:4;8249:6;8245:17;8233:29;;8311:3;8303:4;8295:6;8291:17;8281:8;8277:32;8274:41;8271:128;;;8318:79;;:::i;:::-;8271:128;7838:567;;;;;:::o;8411:1096::-;8550:6;8558;8566;8574;8582;8631:3;8619:9;8610:7;8606:23;8602:33;8599:120;;;8638:79;;:::i;:::-;8599:120;8786:1;8775:9;8771:17;8758:31;8816:18;8808:6;8805:30;8802:117;;;8838:79;;:::i;:::-;8802:117;8951:64;9007:7;8998:6;8987:9;8983:22;8951:64;:::i;:::-;8933:82;;;;8729:296;9092:2;9081:9;9077:18;9064:32;9123:18;9115:6;9112:30;9109:117;;;9145:79;;:::i;:::-;9109:117;9258:79;9329:7;9320:6;9309:9;9305:22;9258:79;:::i;:::-;9240:97;;;;9035:312;9386:2;9412:78;9482:7;9473:6;9462:9;9458:22;9412:78;:::i;:::-;9402:88;;9357:143;8411:1096;;;;;;;;:::o;9513:898::-;9641:6;9649;9657;9665;9714:3;9702:9;9693:7;9689:23;9685:33;9682:120;;;9721:79;;:::i;:::-;9682:120;9869:1;9858:9;9854:17;9841:31;9899:18;9891:6;9888:30;9885:117;;;9921:79;;:::i;:::-;9885:117;10034:79;10105:7;10096:6;10085:9;10081:22;10034:79;:::i;:::-;10016:97;;;;9812:311;10162:2;10188:53;10233:7;10224:6;10213:9;10209:22;10188:53;:::i;:::-;10178:63;;10133:118;10290:2;10316:78;10386:7;10377:6;10366:9;10362:22;10316:78;:::i;:::-;10306:88;;10261:143;9513:898;;;;;;;:::o;10417:126::-;10454:7;10494:42;10487:5;10483:54;10472:65;;10417:126;;;:::o;10549:96::-;10586:7;10615:24;10633:5;10615:24;:::i;:::-;10604:35;;10549:96;;;:::o;10651:122::-;10724:24;10742:5;10724:24;:::i;:::-;10717:5;10714:35;10704:63;;10763:1;10760;10753:12;10704:63;10651:122;:::o;10779:139::-;10825:5;10863:6;10850:20;10841:29;;10879:33;10906:5;10879:33;:::i;:::-;10779:139;;;;:::o;10924:1043::-;11061:6;11069;11077;11085;11093;11142:3;11130:9;11121:7;11117:23;11113:33;11110:120;;;11149:79;;:::i;:::-;11110:120;11269:1;11294:53;11339:7;11330:6;11319:9;11315:22;11294:53;:::i;:::-;11284:63;;11240:117;11424:2;11413:9;11409:18;11396:32;11455:18;11447:6;11444:30;11441:117;;;11477:79;;:::i;:::-;11441:117;11590:79;11661:7;11652:6;11641:9;11637:22;11590:79;:::i;:::-;11572:97;;;;11367:312;11718:2;11744:53;11789:7;11780:6;11769:9;11765:22;11744:53;:::i;:::-;11734:63;;11689:118;11846:2;11872:78;11942:7;11933:6;11922:9;11918:22;11872:78;:::i;:::-;11862:88;;11817:143;10924:1043;;;;;;;;:::o;11973:878::-;12099:6;12107;12115;12164:3;12152:9;12143:7;12139:23;12135:33;12132:120;;;12171:79;;:::i;:::-;12132:120;12291:1;12316:53;12361:7;12352:6;12341:9;12337:22;12316:53;:::i;:::-;12306:63;;12262:117;12446:2;12435:9;12431:18;12418:32;12477:18;12469:6;12466:30;12463:117;;;12499:79;;:::i;:::-;12463:117;12604:77;12673:7;12664:6;12653:9;12649:22;12604:77;:::i;:::-;12594:87;;12389:302;12730:2;12756:78;12826:7;12817:6;12806:9;12802:22;12756:78;:::i;:::-;12746:88;;12701:143;11973:878;;;;;:::o;12857:329::-;12916:6;12965:2;12953:9;12944:7;12940:23;12936:32;12933:119;;;12971:79;;:::i;:::-;12933:119;13091:1;13116:53;13161:7;13152:6;13141:9;13137:22;13116:53;:::i;:::-;13106:63;;13062:117;12857:329;;;;:::o;13192:115::-;13277:23;13294:5;13277:23;:::i;:::-;13272:3;13265:36;13192:115;;:::o;13313:218::-;13404:4;13442:2;13431:9;13427:18;13419:26;;13455:69;13521:1;13510:9;13506:17;13497:6;13455:69;:::i;:::-;13313:218;;;;:::o;13537:896::-;13664:6;13672;13680;13688;13737:3;13725:9;13716:7;13712:23;13708:33;13705:120;;;13744:79;;:::i;:::-;13705:120;13864:1;13889:52;13933:7;13924:6;13913:9;13909:22;13889:52;:::i;:::-;13879:62;;13835:116;14018:2;14007:9;14003:18;13990:32;14049:18;14041:6;14038:30;14035:117;;;14071:79;;:::i;:::-;14035:117;14184:79;14255:7;14246:6;14235:9;14231:22;14184:79;:::i;:::-;14166:97;;;;13961:312;14312:2;14338:78;14408:7;14399:6;14388:9;14384:22;14338:78;:::i;:::-;14328:88;;14283:143;13537:896;;;;;;;:::o;14439:868::-;14552:6;14560;14568;14576;14625:3;14613:9;14604:7;14600:23;14596:33;14593:120;;;14632:79;;:::i;:::-;14593:120;14780:1;14769:9;14765:17;14752:31;14810:18;14802:6;14799:30;14796:117;;;14832:79;;:::i;:::-;14796:117;14945:64;15001:7;14992:6;14981:9;14977:22;14945:64;:::i;:::-;14927:82;;;;14723:296;15058:2;15084:53;15129:7;15120:6;15109:9;15105:22;15084:53;:::i;:::-;15074:63;;15029:118;15186:2;15212:78;15282:7;15273:6;15262:9;15258:22;15212:78;:::i;:::-;15202:88;;15157:143;14439:868;;;;;;;:::o;15313:180::-;15361:77;15358:1;15351:88;15458:4;15455:1;15448:15;15482:4;15479:1;15472:15;15499:180;15547:77;15544:1;15537:88;15644:4;15641:1;15634:15;15668:4;15665:1;15658:15;15685:180;15733:77;15730:1;15723:88;15830:4;15827:1;15820:15;15854:4;15851:1;15844:15;15871:183;15909:3;15932:23;15949:5;15932:23;:::i;:::-;15923:32;;15977:18;15970:5;15967:29;15964:55;;15999:18;;:::i;:::-;15964:55;16046:1;16039:5;16035:13;16028:20;;15871:183;;;:::o;16060:180::-;16108:77;16105:1;16098:88;16205:4;16202:1;16195:15;16229:4;16226:1;16219:15;16246:176;16278:1;16295:20;16313:1;16295:20;:::i;:::-;16290:25;;16329:20;16347:1;16329:20;:::i;:::-;16324:25;;16368:1;16358:35;;16373:18;;:::i;:::-;16358:35;16414:1;16411;16407:9;16402:14;;16246:176;;;;:::o;16428:147::-;16529:11;16566:3;16551:18;;16428:147;;;;:::o;16581:146::-;16678:6;16673:3;16668;16655:30;16719:1;16710:6;16705:3;16701:16;16694:27;16581:146;;;:::o;16755:327::-;16869:3;16890:88;16971:6;16966:3;16890:88;:::i;:::-;16883:95;;16988:56;17037:6;17032:3;17025:5;16988:56;:::i;:::-;17069:6;17064:3;17060:16;17053:23;;16755:327;;;;;:::o;17088:94::-;17121:8;17169:5;17165:2;17161:14;17140:35;;17088:94;;;:::o;17188:::-;17227:7;17256:20;17270:5;17256:20;:::i;:::-;17245:31;;17188:94;;;:::o;17288:100::-;17327:7;17356:26;17376:5;17356:26;:::i;:::-;17345:37;;17288:100;;;:::o;17394:157::-;17499:45;17519:24;17537:5;17519:24;:::i;:::-;17499:45;:::i;:::-;17494:3;17487:58;17394:157;;:::o;17557:432::-;17725:3;17747:103;17846:3;17837:6;17829;17747:103;:::i;:::-;17740:110;;17860:75;17931:3;17922:6;17860:75;:::i;:::-;17960:2;17955:3;17951:12;17944:19;;17980:3;17973:10;;17557:432;;;;;;:::o;17995:113::-;18061:6;18095:5;18089:12;18079:22;;17995:113;;;:::o;18114:162::-;18230:11;18267:3;18252:18;;18114:162;;;;:::o;18282:131::-;18348:4;18371:3;18363:11;;18401:4;18396:3;18392:14;18384:22;;18282:131;;;:::o;18419:113::-;18502:23;18519:5;18502:23;:::i;:::-;18497:3;18490:36;18419:113;;:::o;18538:191::-;18613:10;18634:52;18682:3;18674:6;18634:52;:::i;:::-;18718:4;18713:3;18709:14;18695:28;;18538:191;;;;:::o;18735:112::-;18804:4;18836;18831:3;18827:14;18819:22;;18735:112;;;:::o;18881:768::-;19016:3;19045:53;19092:5;19045:53;:::i;:::-;19114:103;19210:6;19205:3;19114:103;:::i;:::-;19107:110;;19241:55;19290:5;19241:55;:::i;:::-;19319:7;19350:1;19335:289;19360:6;19357:1;19354:13;19335:289;;;19436:6;19430:13;19463:69;19528:3;19513:13;19463:69;:::i;:::-;19456:76;;19555:59;19607:6;19555:59;:::i;:::-;19545:69;;19395:229;19382:1;19379;19375:9;19370:14;;19335:289;;;19339:14;19640:3;19633:10;;19021:628;;;18881:768;;;;:::o;19655:331::-;19815:3;19837:123;19956:3;19947:6;19837:123;:::i;:::-;19830:130;;19977:3;19970:10;;19655:331;;;;:::o;19992:472::-;20180:3;20195:75;20266:3;20257:6;20195:75;:::i;:::-;20295:2;20290:3;20286:12;20279:19;;20315:123;20434:3;20425:6;20315:123;:::i;:::-;20308:130;;20455:3;20448:10;;19992:472;;;;;:::o;20470:191::-;20510:3;20529:20;20547:1;20529:20;:::i;:::-;20524:25;;20563:20;20581:1;20563:20;:::i;:::-;20558:25;;20606:1;20603;20599:9;20592:16;;20627:3;20624:1;20621:10;20618:36;;;20634:18;;:::i;:::-;20618:36;20470:191;;;;:::o;20667:175::-;20705:3;20728:23;20745:5;20728:23;:::i;:::-;20719:32;;20773:10;20766:5;20763:21;20760:47;;20787:18;;:::i;:::-;20760:47;20834:1;20827:5;20823:13;20816:20;;20667:175;;;:::o;20848:205::-;20887:3;20906:19;20923:1;20906:19;:::i;:::-;20901:24;;20939:19;20956:1;20939:19;:::i;:::-;20934:24;;20981:1;20978;20974:9;20967:16;;21004:18;20999:3;20996:27;20993:53;;;21026:18;;:::i;:::-;20993:53;20848:205;;;;:::o;21059:183::-;21157:11;21191:6;21186:3;21179:19;21231:4;21226:3;21222:14;21207:29;;21059:183;;;;:::o;21248:105::-;21323:23;21340:5;21323:23;:::i;:::-;21318:3;21311:36;21248:105;;:::o;21359:175::-;21426:10;21447:44;21487:3;21479:6;21447:44;:::i;:::-;21523:4;21518:3;21514:14;21500:28;;21359:175;;;;:::o;21568:724::-;21685:3;21714:53;21761:5;21714:53;:::i;:::-;21783:85;21861:6;21856:3;21783:85;:::i;:::-;21776:92;;21892:55;21941:5;21892:55;:::i;:::-;21970:7;22001:1;21986:281;22011:6;22008:1;22005:13;21986:281;;;22087:6;22081:13;22114:61;22171:3;22156:13;22114:61;:::i;:::-;22107:68;;22198:59;22250:6;22198:59;:::i;:::-;22188:69;;22046:221;22033:1;22030;22026:9;22021:14;;21986:281;;;21990:14;22283:3;22276:10;;21690:602;;;21568:724;;;;:::o;22298:168::-;22381:11;22415:6;22410:3;22403:19;22455:4;22450:3;22446:14;22431:29;;22298:168;;;;:::o;22494:314::-;22590:3;22611:70;22674:6;22669:3;22611:70;:::i;:::-;22604:77;;22691:56;22740:6;22735:3;22728:5;22691:56;:::i;:::-;22772:29;22794:6;22772:29;:::i;:::-;22767:3;22763:39;22756:46;;22494:314;;;;;:::o;22814:105::-;22889:23;22906:5;22889:23;:::i;:::-;22884:3;22877:36;22814:105;;:::o;22925:99::-;22996:21;23011:5;22996:21;:::i;:::-;22991:3;22984:34;22925:99;;:::o;23030:108::-;23107:24;23125:5;23107:24;:::i;:::-;23102:3;23095:37;23030:108;;:::o;23216:1044::-;23363:4;23358:3;23354:14;23460:4;23453:5;23449:16;23443:23;23479:61;23534:4;23529:3;23525:14;23511:12;23479:61;:::i;:::-;23378:172;23643:4;23636:5;23632:16;23626:23;23662:61;23717:4;23712:3;23708:14;23694:12;23662:61;:::i;:::-;23560:173;23816:4;23809:5;23805:16;23799:23;23835:61;23890:4;23885:3;23881:14;23867:12;23835:61;:::i;:::-;23743:163;23990:4;23983:5;23979:16;23973:23;24009:57;24060:4;24055:3;24051:14;24037:12;24009:57;:::i;:::-;23916:160;24161:4;24154:5;24150:16;24144:23;24180:63;24237:4;24232:3;24228:14;24214:12;24180:63;:::i;:::-;24086:167;23332:928;23216:1044;;:::o;24266:1014::-;24597:4;24635:3;24624:9;24620:19;24612:27;;24685:9;24679:4;24675:20;24671:1;24660:9;24656:17;24649:47;24713:106;24814:4;24805:6;24713:106;:::i;:::-;24705:114;;24866:9;24860:4;24856:20;24851:2;24840:9;24836:18;24829:48;24894:86;24975:4;24966:6;24958;24894:86;:::i;:::-;24886:94;;25027:9;25021:4;25017:20;25012:2;25001:9;24997:18;24990:48;25055:86;25136:4;25127:6;25119;25055:86;:::i;:::-;25047:94;;25151:122;25269:2;25258:9;25254:18;25245:6;25151:122;:::i;:::-;24266:1014;;;;;;;;;:::o;25286:101::-;25354:4;25377:3;25369:11;;25286:101;;;:::o;25393:120::-;25444:5;25469:38;25503:2;25498:3;25494:12;25489:3;25469:38;:::i;:::-;25460:47;;25393:120;;;;:::o;25519:114::-;25590:4;25622;25617:3;25613:14;25605:22;;25519:114;;;:::o;25667:735::-;25812:3;25835:103;25931:6;25926:3;25835:103;:::i;:::-;25828:110;;25962:57;26013:5;25962:57;:::i;:::-;26042:7;26073:1;26058:319;26083:6;26080:1;26077:13;26058:319;;;26153:41;26187:6;26178:7;26153:41;:::i;:::-;26214:69;26279:3;26264:13;26214:69;:::i;:::-;26207:76;;26306:61;26360:6;26306:61;:::i;:::-;26296:71;;26118:259;26105:1;26102;26098:9;26093:14;;26058:319;;;26062:14;26393:3;26386:10;;25817:585;;25667:735;;;;;:::o;26408:351::-;26578:3;26600:133;26729:3;26720:6;26712;26600:133;:::i;:::-;26593:140;;26750:3;26743:10;;26408:351;;;;;:::o;26765:169::-;26803:3;26826:23;26843:5;26826:23;:::i;:::-;26817:32;;26871:4;26864:5;26861:15;26858:41;;26879:18;;:::i;:::-;26858:41;26926:1;26919:5;26915:13;26908:20;;26765:169;;;:::o;26968:691::-;27095:3;27118:85;27196:6;27191:3;27118:85;:::i;:::-;27111:92;;27227:57;27278:5;27227:57;:::i;:::-;27307:7;27338:1;27323:311;27348:6;27345:1;27342:13;27323:311;;;27418:41;27452:6;27443:7;27418:41;:::i;:::-;27479:61;27536:3;27521:13;27479:61;:::i;:::-;27472:68;;27563:61;27617:6;27563:61;:::i;:::-;27553:71;;27383:251;27370:1;27367;27363:9;27358:14;;27323:311;;;27327:14;27650:3;27643:10;;27100:559;;26968:691;;;;;:::o;27665:817::-;27950:4;27988:3;27977:9;27973:19;27965:27;;28038:9;28032:4;28028:20;28024:1;28013:9;28009:17;28002:47;28066:116;28177:4;28168:6;28160;28066:116;:::i;:::-;28058:124;;28229:9;28223:4;28219:20;28214:2;28203:9;28199:18;28192:48;28257:86;28338:4;28329:6;28321;28257:86;:::i;:::-;28249:94;;28353:122;28471:2;28460:9;28456:18;28447:6;28353:122;:::i;:::-;27665:817;;;;;;;;:::o;28488:600::-;28717:4;28755:3;28744:9;28740:19;28732:27;;28805:9;28799:4;28795:20;28791:1;28780:9;28776:17;28769:47;28833:116;28944:4;28935:6;28927;28833:116;:::i;:::-;28825:124;;28959:122;29077:2;29066:9;29062:18;29053:6;28959:122;:::i;:::-;28488:600;;;;;;:::o;29094:327::-;29152:6;29201:2;29189:9;29180:7;29176:23;29172:32;29169:119;;;29207:79;;:::i;:::-;29169:119;29327:1;29352:52;29396:7;29387:6;29376:9;29372:22;29352:52;:::i;:::-;29342:62;;29298:116;29094:327;;;;:::o;29427:208::-;29466:4;29486:19;29503:1;29486:19;:::i;:::-;29481:24;;29519:19;29536:1;29519:19;:::i;:::-;29514:24;;29562:1;29559;29555:9;29547:17;;29586:18;29580:4;29577:28;29574:54;;;29608:18;;:::i;:::-;29574:54;29427:208;;;;:::o;29641:275::-;29680:7;29703:19;29720:1;29703:19;:::i;:::-;29698:24;;29736:19;29753:1;29736:19;:::i;:::-;29731:24;;29790:1;29787;29783:9;29812:29;29829:11;29812:29;:::i;:::-;29801:40;;29873:11;29864:7;29861:24;29851:58;;29889:18;;:::i;:::-;29851:58;29688:228;29641:275;;;;:::o;29922:194::-;29962:4;29982:20;30000:1;29982:20;:::i;:::-;29977:25;;30016:20;30034:1;30016:20;:::i;:::-;30011:25;;30060:1;30057;30053:9;30045:17;;30084:1;30078:4;30075:11;30072:37;;;30089:18;;:::i;:::-;30072:37;29922:194;;;;:::o;30122:118::-;30209:24;30227:5;30209:24;:::i;:::-;30204:3;30197:37;30122:118;;:::o;30246:710::-;30503:4;30541:3;30530:9;30526:19;30518:27;;30591:9;30585:4;30581:20;30577:1;30566:9;30562:17;30555:47;30619:116;30730:4;30721:6;30713;30619:116;:::i;:::-;30611:124;;30745:72;30813:2;30802:9;30798:18;30789:6;30745:72;:::i;:::-;30827:122;30945:2;30934:9;30930:18;30921:6;30827:122;:::i;:::-;30246:710;;;;;;;:::o;30962:580::-;31181:4;31219:3;31208:9;31204:19;31196:27;;31269:9;31263:4;31259:20;31255:1;31244:9;31240:17;31233:47;31297:106;31398:4;31389:6;31297:106;:::i;:::-;31289:114;;31413:122;31531:2;31520:9;31516:18;31507:6;31413:122;:::i;:::-;30962:580;;;;;:::o;31548:173::-;31579:1;31596:19;31613:1;31596:19;:::i;:::-;31591:24;;31629:19;31646:1;31629:19;:::i;:::-;31624:24;;31667:1;31657:35;;31672:18;;:::i;:::-;31657:35;31713:1;31710;31706:9;31701:14;;31548:173;;;;:::o;31727:180::-;31775:77;31772:1;31765:88;31872:4;31869:1;31862:15;31896:4;31893:1;31886:15;31913:320;31957:6;31994:1;31988:4;31984:12;31974:22;;32041:1;32035:4;32031:12;32062:18;32052:81;;32118:4;32110:6;32106:17;32096:27;;32052:81;32180:2;32172:6;32169:14;32149:18;32146:38;32143:84;;32199:18;;:::i;:::-;32143:84;31964:269;31913:320;;;:::o;32239:140::-;32287:4;32310:3;32302:11;;32333:3;32330:1;32323:14;32367:4;32364:1;32354:18;32346:26;;32239:140;;;:::o;32407:827::-;32490:3;32527:5;32521:12;32556:36;32582:9;32556:36;:::i;:::-;32608:70;32671:6;32666:3;32608:70;:::i;:::-;32601:77;;32709:1;32698:9;32694:17;32725:1;32720:164;;;;32898:1;32893:335;;;;32687:541;;32720:164;32804:4;32800:9;32789;32785:25;32780:3;32773:38;32864:6;32857:14;32850:22;32844:4;32840:33;32835:3;32831:43;32824:50;;32720:164;;32893:335;32960:37;32991:5;32960:37;:::i;:::-;33019:1;33033:154;33047:6;33044:1;33041:13;33033:154;;;33121:7;33115:14;33111:1;33106:3;33102:11;33095:35;33171:1;33162:7;33158:15;33147:26;;33069:4;33066:1;33062:12;33057:17;;33033:154;;;33216:1;33211:3;33207:11;33200:18;;32900:328;;32687:541;;32494:740;;32407:827;;;;:::o;33240:791::-;33512:4;33550:3;33539:9;33535:19;33527:27;;33600:9;33594:4;33590:20;33586:1;33575:9;33571:17;33564:47;33628:73;33696:4;33687:6;33628:73;:::i;:::-;33620:81;;33748:9;33742:4;33738:20;33733:2;33722:9;33718:18;33711:48;33776:116;33887:4;33878:6;33870;33776:116;:::i;:::-;33768:124;;33902:122;34020:2;34009:9;34005:18;33996:6;33902:122;:::i;:::-;33240:791;;;;;;;:::o;34037:98::-;34088:6;34122:5;34116:12;34106:22;;34037:98;;;:::o;34141:246::-;34222:1;34232:113;34246:6;34243:1;34240:13;34232:113;;;34331:1;34326:3;34322:11;34316:18;34312:1;34307:3;34303:11;34296:39;34268:2;34265:1;34261:10;34256:15;;34232:113;;;34379:1;34370:6;34365:3;34361:16;34354:27;34203:184;34141:246;;;:::o;34393:373::-;34479:3;34507:38;34539:5;34507:38;:::i;:::-;34561:70;34624:6;34619:3;34561:70;:::i;:::-;34554:77;;34640:65;34698:6;34693:3;34686:4;34679:5;34675:16;34640:65;:::i;:::-;34730:29;34752:6;34730:29;:::i;:::-;34725:3;34721:39;34714:46;;34483:283;34393:373;;;;:::o;34772:1105::-;35121:4;35159:3;35148:9;35144:19;35136:27;;35209:9;35203:4;35199:20;35195:1;35184:9;35180:17;35173:47;35237:76;35308:4;35299:6;35237:76;:::i;:::-;35229:84;;35360:9;35354:4;35350:20;35345:2;35334:9;35330:18;35323:48;35388:106;35489:4;35480:6;35388:106;:::i;:::-;35380:114;;35541:9;35535:4;35531:20;35526:2;35515:9;35511:18;35504:48;35569:86;35650:4;35641:6;35633;35569:86;:::i;:::-;35561:94;;35665:72;35733:2;35722:9;35718:18;35709:6;35665:72;:::i;:::-;35747:123;35865:3;35854:9;35850:19;35841:6;35747:123;:::i;:::-;34772:1105;;;;;;;;;:::o;35883:93::-;35920:6;35967:2;35962;35955:5;35951:14;35947:23;35937:33;;35883:93;;;:::o;35982:107::-;36026:8;36076:5;36070:4;36066:16;36045:37;;35982:107;;;;:::o;36095:393::-;36164:6;36214:1;36202:10;36198:18;36237:97;36267:66;36256:9;36237:97;:::i;:::-;36355:39;36385:8;36374:9;36355:39;:::i;:::-;36343:51;;36427:4;36423:9;36416:5;36412:21;36403:30;;36476:4;36466:8;36462:19;36455:5;36452:30;36442:40;;36171:317;;36095:393;;;;;:::o;36494:60::-;36522:3;36543:5;36536:12;;36494:60;;;:::o;36560:142::-;36610:9;36643:53;36661:34;36670:24;36688:5;36670:24;:::i;:::-;36661:34;:::i;:::-;36643:53;:::i;:::-;36630:66;;36560:142;;;:::o;36708:75::-;36751:3;36772:5;36765:12;;36708:75;;;:::o;36789:269::-;36899:39;36930:7;36899:39;:::i;:::-;36960:91;37009:41;37033:16;37009:41;:::i;:::-;37001:6;36994:4;36988:11;36960:91;:::i;:::-;36954:4;36947:105;36865:193;36789:269;;;:::o;37064:73::-;37109:3;37064:73;:::o;37143:189::-;37220:32;;:::i;:::-;37261:65;37319:6;37311;37305:4;37261:65;:::i;:::-;37196:136;37143:189;;:::o;37338:186::-;37398:120;37415:3;37408:5;37405:14;37398:120;;;37469:39;37506:1;37499:5;37469:39;:::i;:::-;37442:1;37435:5;37431:13;37422:22;;37398:120;;;37338:186;;:::o;37530:541::-;37630:2;37625:3;37622:11;37619:445;;;37664:37;37695:5;37664:37;:::i;:::-;37747:29;37765:10;37747:29;:::i;:::-;37737:8;37733:44;37930:2;37918:10;37915:18;37912:49;;;37951:8;37936:23;;37912:49;37974:80;38030:22;38048:3;38030:22;:::i;:::-;38020:8;38016:37;38003:11;37974:80;:::i;:::-;37634:430;;37619:445;37530:541;;;:::o;38077:117::-;38131:8;38181:5;38175:4;38171:16;38150:37;;38077:117;;;;:::o;38200:169::-;38244:6;38277:51;38325:1;38321:6;38313:5;38310:1;38306:13;38277:51;:::i;:::-;38273:56;38358:4;38352;38348:15;38338:25;;38251:118;38200:169;;;;:::o;38374:295::-;38450:4;38596:29;38621:3;38615:4;38596:29;:::i;:::-;38588:37;;38658:3;38655:1;38651:11;38645:4;38642:21;38634:29;;38374:295;;;;:::o;38674:1390::-;38789:36;38821:3;38789:36;:::i;:::-;38890:18;38882:6;38879:30;38876:56;;;38912:18;;:::i;:::-;38876:56;38956:38;38988:4;38982:11;38956:38;:::i;:::-;39041:66;39100:6;39092;39086:4;39041:66;:::i;:::-;39134:1;39158:4;39145:17;;39190:2;39182:6;39179:14;39207:1;39202:617;;;;39863:1;39880:6;39877:77;;;39929:9;39924:3;39920:19;39914:26;39905:35;;39877:77;39980:67;40040:6;40033:5;39980:67;:::i;:::-;39974:4;39967:81;39836:222;39172:886;;39202:617;39254:4;39250:9;39242:6;39238:22;39288:36;39319:4;39288:36;:::i;:::-;39346:1;39360:208;39374:7;39371:1;39368:14;39360:208;;;39453:9;39448:3;39444:19;39438:26;39430:6;39423:42;39504:1;39496:6;39492:14;39482:24;;39551:2;39540:9;39536:18;39523:31;;39397:4;39394:1;39390:12;39385:17;;39360:208;;;39596:6;39587:7;39584:19;39581:179;;;39654:9;39649:3;39645:19;39639:26;39697:48;39739:4;39731:6;39727:17;39716:9;39697:48;:::i;:::-;39689:6;39682:64;39604:156;39581:179;39806:1;39802;39794:6;39790:14;39786:22;39780:4;39773:36;39209:610;;;39172:886;;38764:1300;;;38674:1390;;:::o;40070:96::-;40104:8;40153:5;40148:3;40144:15;40123:36;;40070:96;;;:::o;40172:94::-;40210:7;40239:21;40254:5;40239:21;:::i;:::-;40228:32;;40172:94;;;:::o;40272:153::-;40375:43;40394:23;40411:5;40394:23;:::i;:::-;40375:43;:::i;:::-;40370:3;40363:56;40272:153;;:::o;40431:96::-;40465:8;40514:5;40509:3;40505:15;40484:36;;40431:96;;;:::o;40533:94::-;40571:7;40600:21;40615:5;40600:21;:::i;:::-;40589:32;;40533:94;;;:::o;40633:153::-;40736:43;40755:23;40772:5;40755:23;:::i;:::-;40736:43;:::i;:::-;40731:3;40724:56;40633:153;;:::o;40792:79::-;40831:7;40860:5;40849:16;;40792:79;;;:::o;40877:157::-;40982:45;41002:24;41020:5;41002:24;:::i;:::-;40982:45;:::i;:::-;40977:3;40970:58;40877:157;;:::o;41040:96::-;41074:8;41123:5;41118:3;41114:15;41093:36;;41040:96;;;:::o;41142:93::-;41179:7;41208:21;41223:5;41208:21;:::i;:::-;41197:32;;41142:93;;;:::o;41241:95::-;41277:7;41306:24;41324:5;41306:24;:::i;:::-;41295:35;;41241:95;;;:::o;41342:145::-;41441:39;41458:21;41473:5;41458:21;:::i;:::-;41441:39;:::i;:::-;41436:3;41429:52;41342:145;;:::o;41493:792::-;41705:3;41720:73;41789:3;41780:6;41720:73;:::i;:::-;41818:1;41813:3;41809:11;41802:18;;41830:73;41899:3;41890:6;41830:73;:::i;:::-;41928:1;41923:3;41919:11;41912:18;;41940:73;42009:3;42000:6;41940:73;:::i;:::-;42038:1;42033:3;42029:11;42022:18;;42050:75;42121:3;42112:6;42050:75;:::i;:::-;42150:2;42145:3;42141:12;42134:19;;42163:69;42228:3;42219:6;42163:69;:::i;:::-;42257:1;42252:3;42248:11;42241:18;;42276:3;42269:10;;41493:792;;;;;;;;:::o;42291:200::-;42330:4;42350:19;42367:1;42350:19;:::i;:::-;42345:24;;42383:19;42400:1;42383:19;:::i;:::-;42378:24;;42426:1;42423;42419:9;42411:17;;42450:10;42444:4;42441:20;42438:46;;;42464:18;;:::i;:::-;42438:46;42291:200;;;;:::o;42497:197::-;42536:3;42555:19;42572:1;42555:19;:::i;:::-;42550:24;;42588:19;42605:1;42588:19;:::i;:::-;42583:24;;42630:1;42627;42623:9;42616:16;;42653:10;42648:3;42645:19;42642:45;;;42667:18;;:::i;:::-;42642:45;42497:197;;;;:::o;42700:118::-;42787:24;42805:5;42787:24;:::i;:::-;42782:3;42775:37;42700:118;;:::o;42824:442::-;42973:4;43011:2;43000:9;42996:18;42988:26;;43024:71;43092:1;43081:9;43077:17;43068:6;43024:71;:::i;:::-;43105:72;43173:2;43162:9;43158:18;43149:6;43105:72;:::i;:::-;43187;43255:2;43244:9;43240:18;43231:6;43187:72;:::i;:::-;42824:442;;;;;;:::o;43272:137::-;43326:5;43357:6;43351:13;43342:22;;43373:30;43397:5;43373:30;:::i;:::-;43272:137;;;;:::o;43415:345::-;43482:6;43531:2;43519:9;43510:7;43506:23;43502:32;43499:119;;;43537:79;;:::i;:::-;43499:119;43657:1;43682:61;43735:7;43726:6;43715:9;43711:22;43682:61;:::i;:::-;43672:71;;43628:125;43415:345;;;;:::o;43766:332::-;43887:4;43925:2;43914:9;43910:18;43902:26;;43938:71;44006:1;43995:9;43991:17;43982:6;43938:71;:::i;:::-;44019:72;44087:2;44076:9;44072:18;44063:6;44019:72;:::i;:::-;43766:332;;;;;:::o;44104:679::-;44300:3;44315:75;44386:3;44377:6;44315:75;:::i;:::-;44415:2;44410:3;44406:12;44399:19;;44428:75;44499:3;44490:6;44428:75;:::i;:::-;44528:2;44523:3;44519:12;44512:19;;44541:75;44612:3;44603:6;44541:75;:::i;:::-;44641:2;44636:3;44632:12;44625:19;;44654:75;44725:3;44716:6;44654:75;:::i;:::-;44754:2;44749:3;44745:12;44738:19;;44774:3;44767:10;;44104:679;;;;;;;:::o;44789:233::-;44828:3;44851:24;44869:5;44851:24;:::i;:::-;44842:33;;44897:66;44890:5;44887:77;44884:103;;44967:18;;:::i;:::-;44884:103;45014:1;45007:5;45003:13;44996:20;;44789:233;;;:::o;45028:538::-;45196:3;45211:75;45282:3;45273:6;45211:75;:::i;:::-;45311:2;45306:3;45302:12;45295:19;;45324:75;45395:3;45386:6;45324:75;:::i;:::-;45424:2;45419:3;45415:12;45408:19;;45437:75;45508:3;45499:6;45437:75;:::i;:::-;45537:2;45532:3;45528:12;45521:19;;45557:3;45550:10;;45028:538;;;;;;:::o;45572:410::-;45612:7;45635:20;45653:1;45635:20;:::i;:::-;45630:25;;45669:20;45687:1;45669:20;:::i;:::-;45664:25;;45724:1;45721;45717:9;45746:30;45764:11;45746:30;:::i;:::-;45735:41;;45925:1;45916:7;45912:15;45909:1;45906:22;45886:1;45879:9;45859:83;45836:139;;45955:18;;:::i;:::-;45836:139;45620:362;45572:410;;;;:::o;45988:171::-;46027:3;46050:24;46068:5;46050:24;:::i;:::-;46041:33;;46096:4;46089:5;46086:15;46083:41;;46104:18;;:::i;:::-;46083:41;46151:1;46144:5;46140:13;46133:20;;45988:171;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"check_invariant_validatorPKs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_numberOfValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"publicKeyId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"check_removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"helper_registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorIds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "6080604052600060035534801561001557600080fd5b506144cd806100256000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063686e682c11610071578063686e682c14610116578063bc26e7e514610132578063bf0f2fb21461014e578063bfbdaffd1461016a578063d7b8edbd1461019a578063d86eda8c146101b6576100a9565b806301ddff09146100ae57806306e8fb9c146100b857806312b3fc19146100d45780635fec6dd0146100f0578063626b6b8d1461010c575b600080fd5b6100b66101d2565b005b6100d260048036038101906100cd9190612f5d565b61025f565b005b6100ee60048036038101906100e9919061308c565b610d2a565b005b61010a60048036038101906101059190613121565b610feb565b005b6101146112aa565b005b610130600480360381019061012b9190613121565b6112ac565b005b61014c600480360381019061014791906131f3565b611613565b005b6101686004803603810190610163919061327c565b61171c565b005b610184600480360381019061017f91906132eb565b61197c565b6040516101919190613327565b60405180910390f35b6101b460048036038101906101af9190613342565b6119ba565b005b6101d060048036038101906101cb91906133b6565b611a6b565b005b60006101dc611c6f565b905060005b6001805490508167ffffffffffffffff16101561025b576000801b82600101600060018467ffffffffffffffff16815481106102205761021f61342a565b5b90600052602060002001548152602001908152602001600020541461024857610247613459565b5b8080610253906134b7565b9150506101e1565b5050565b6000610269611c6f565b90506000610275611cab565b9050600087519050600467ffffffffffffffff168110806102a05750600d67ffffffffffffffff1681115b806102c257506001600367ffffffffffffffff16826102bf9190613516565b14155b156102f9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a905014610340576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a33604051602001610357939291906135ce565b6040516020818303038152906040528051906020012090506000801b84600001600083815260200190815260200160002054146103c0576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016103d391906136b0565b6040516020818303038152906040528051906020012060001c1760001b84600001600083815260200190815260200160002081905550506000338960405160200161041f9291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036104f7576000866000015163ffffffff1614158061048457506000866020015167ffffffffffffffff1614155b8061049e57506000866040015167ffffffffffffffff1614155b806104ae57506000866080015114155b806104bb57508560600151155b156104f2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610542565b61050086611ce7565b8114610538576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61054186611d33565b5b50858560800181815161055591906136ef565b915081815250506000856060015115610bd7576000805b84811015610ba15760008c82815181106105895761058861342a565b5b60200260200101519050856001836105a191906136ef565b101561068f578c6001836105b591906136ef565b815181106105c6576105c561342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff16111561061b576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c60018361062991906136ef565b8151811061063a5761063961342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361068e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610876576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156109705760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561093757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561096e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b61097981611d71565b87600001600c9054906101000a900463ffffffff1663ffffffff168160000180516109a390613723565b63ffffffff16908163ffffffff1681525063ffffffff1611156109f2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80608001516020015184610a06919061374f565b9350806020015185610a18919061374f565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061056c565b50610bbf81610baf87611e39565b89611eae9092919063ffffffff16565b610bd560018087611efe9092919063ffffffff16565b505b856000018051610be690613723565b63ffffffff16908163ffffffff1681525050610c59818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15610c90576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9986611ce7565b8560010160008481526020019081526020016000208190555060008714610cc457610cc387612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610d14969594939291906138f4565b60405180910390a2505050505050505050505050565b6000610d34611c6f565b90506000868633604051602001610d4d939291906135ce565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610dc5576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610ddb9291906139de565b604051602081830303815290604052805190602001201690508083831614610e2f576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e89338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a612156909392919063ffffffff16565b9050866060015115610f2c576000610ee68a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a61222e565b5090506000610ef3611cab565b9050610f1282610f0283611e39565b8b611eae9092919063ffffffff16565b610f296000600183611efe9092919063ffffffff16565b50505b866000018051610f3b906139f7565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610f6f87611ce7565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610fd6959493929190613a7d565b60405180910390a25050505050505050505050565b6000610ff5611c6f565b9050600061105133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905082606001511561108f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611099611cab565b90506000806110f0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600188600001518861222e565b91509150868660800181815161110691906136ef565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff168152505061114783611e39565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506111806001876000015185611efe9092919063ffffffff16565b6111e1818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15611218576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61122186611ce7565b85600101600086815260200190815260200160002081905550600087111561124d5761124c87612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a8960405161129793929190613ac6565b60405180910390a2505050505050505050565b565b60006112b6611c6f565b9050600061131233878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905061131d83611d33565b6000611327611cab565b905060008460600151156114765760008089899050905060005b81811015611455576000611353611c6f565b60060160008d8d8581811061136b5761136a61342a565b5b90506020020160208101906113809190613af8565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff16436113e69190613b25565b6113f09190613b61565b8160020160000160049054906101000a900467ffffffffffffffff16611416919061374f565b84611421919061374f565b93508060000160049054906101000a900467ffffffffffffffff1685611447919061374f565b945081600101915050611341565b50506114748161146485611e39565b88611eae9092919063ffffffff16565b505b85856080015110156114b4576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516114c69190613b9e565b91508181525050846060015180156114e957506000856000015163ffffffff1614155b80156115525750611551818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611fdd90949392919063ffffffff16565b5b15611589576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159285611ce7565b846001016000858152602001908152602001600020819055506115b5338761240a565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516116019493929190613be1565b60405180910390a25050505050505050565b600061161d611c6f565b9050600061167987878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b9050838360800181815161168d91906136ef565b9150818152505061169d83611ce7565b826001016000838152602001908152602001600020819055506116bf84612072565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a28787878760405161170b9493929190613be1565b60405180910390a250505050505050565b6000611726611c6f565b9050600061174185858486612156909392919063ffffffff16565b905061174c83611d33565b6000611756611cab565b905060008061176c87600088600001518861222e565b9150915061178d8261177d85611e39565b886124ed9092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156118295750611827828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611fdd90949392919063ffffffff16565b155b15611860576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61187a6000886000015186611efe9092919063ffffffff16565b6000876080015114611899578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506118f587611ce7565b866001016000878152602001908152602001600020819055506000811461192157611920338261240a565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611969929190613c21565b60405180910390a2505050505050505050565b6002818154811061198c57600080fd5b9060005260206000209060049182820401919006600802915054906101000a900467ffffffffffffffff1681565b600080549050846119cb9190613c51565b93503073ffffffffffffffffffffffffffffffffffffffff166312b3fc1960008667ffffffffffffffff1681548110611a0757611a0661342a565b5b906000526020600020018585856040518563ffffffff1660e01b8152600401611a339493929190613d7b565b600060405180830381600087803b158015611a4d57600080fd5b505af1158015611a61573d6000803e3d6000fd5b5050505050505050565b6000611a75611c6f565b90506000611a816125a1565b90506000611a8d6126b8565b905060003382604051602001611aa49291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b8103611b5c576000866000019063ffffffff16908163ffffffff16815250506000866020019067ffffffffffffffff16908167ffffffffffffffff16815250506000866040019067ffffffffffffffff16908167ffffffffffffffff168152505060008660800181815250506001866060019015159081151581525050611b7f565b611b6586611ce7565b856001016000848152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff166306e8fb9c85858c8c8c8c6040518763ffffffff1660e01b8152600401611bc296959493929190613e30565b600060405180830381600087803b158015611bdc57600080fd5b505af1925050508015611bed575060015b611c05576000611c0057611bff613459565b5b611c64565b600084908060018154018082558091505060019003906000526020600020016000909190919091509081611c399190614032565b5060018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c611ca29190613b9e565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c611cde9190613b9e565b90508091505090565b600081600001518260200151836040015184608001518560600151604051602001611d169594939291906141d9565b604051602081830303815290604052805190602001209050919050565b8060600151611d6e576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611d8c9190614238565b63ffffffff16611d9c9190613b61565b9050808260800151602001818151611db4919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681611de79190613b61565b8260800151604001818151611dfc919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611e7a9190613b9e565b611e849190613b61565b8260000160189054906101000a900467ffffffffffffffff16611ea7919061374f565b9050919050565b611eb98383836124ed565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611f07836128e6565b81611f5257808360000160048282829054906101000a900463ffffffff16611f2f9190614238565b92506101000a81548163ffffffff021916908363ffffffff160217905550611fd8565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611f7c9190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611fd7576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614612068576120038267ffffffffffffffff1661293f565b866080015110156120175760019050612069565b6000866000015163ffffffff168587612030919061374f565b8561203b9190613b61565b6120459190613b61565b905061205a8167ffffffffffffffff1661293f565b876080015110915050612069565b5b95945050505050565b61207a611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016120da939291906142b7565b6020604051808303816000875af11580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d9190614303565b612153576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600080848460405160200161216c9291906136c7565b604051602081830303815290604052805190602001209050600061218f87611ce7565b905060008460010160008481526020019081526020016000205490506000801b81036121e7576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114612220576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b86518110156124005760008782815181106122525761225161342a565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16146123ca576122b781612961565b8761230257868160000160008282829054906101000a900463ffffffff166122df9190614238565b92506101000a81548163ffffffff021916908363ffffffff1602179055506123a3565b61230a611cab565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff166123479190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1611156123a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff16846123c7919061374f565b93505b8060020160000160049054906101000a900467ffffffffffffffff16856123f1919061374f565b94508260010192505050612234565b5094509492505050565b612412611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612470929190614330565b6020604051808303816000875af115801561248f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b39190614303565b6124e9576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff1684602001518361250a9190613b25565b6125149190613b61565b9050600081856000015163ffffffff168660400151866125349190613b25565b61253e9190613b61565b612548919061374f565b905084608001516125628267ffffffffffffffff1661293f565b1161258e5761257a8167ffffffffffffffff1661293f565b85608001516125899190613b9e565b612591565b60005b8560800181815250505050505050565b60606000603067ffffffffffffffff8111156125c0576125bf612ca4565b5b6040519080825280601f01601f1916602001820160405280156125f25781602001600182028036833780820191505090505b50905060005b60308110156126985761010060035442338460405160200161261d9493929190614359565b6040516020818303038152906040528051906020012060001c6126409190613516565b60f81b8282815181106126565761265561342a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612690906143a7565b9150506125f8565b50600360008154809291906126ac906143a7565b91905055508091505090565b60606000600467ffffffffffffffff1642336003546040516020016126df939291906143ef565b6040516020818303038152906040528051906020012060001c6127029190613516565b90506000600382612713919061442c565b600461271f91906136ef565b905060036000815480929190612734906143a7565b91905055508067ffffffffffffffff81111561275357612752612ca4565b5b6040519080825280602002602001820160405280156127815781602001602082028036833780820191505090505b50925060005b818110156128e0576000805b600360008154809291906127a6906143a7565b91905055506127b3612aa0565b91506127be82612aeb565b15905080156127935760008390505b60008111801561281657508267ffffffffffffffff16876001836127f19190613b9e565b815181106128025761280161342a565b5b602002602001015167ffffffffffffffff16115b1561289457865181101561288157866001826128329190613b9e565b815181106128435761284261342a565b5b602002602001015187828151811061285e5761285d61342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061288c9061446e565b9150506127cd565b828782815181106128a8576128a761342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505050505080806128d8906143a7565b915050612787565b50505090565b6128ef81612b80565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff1661295a919061442c565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff164361299f9190614238565b63ffffffff166129af9190613b61565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166129db919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff1681612a279190613b61565b82600201600001600c8282829054906101000a900467ffffffffffffffff16612a50919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b6000680100000000000000004233600354604051602001612ac3939291906143ef565b6040516020818303038152906040528051906020012060001c612ae69190613516565b905090565b600080600090505b600280549050811015612b75578267ffffffffffffffff1660028281548110612b1f57612b1e61342a565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1603612b62576001915050612b7b565b8080612b6d906143a7565b915050612af3565b50600090505b919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612bdc9190613b25565b612be69190613b61565b612bf09190613b61565b8260010160009054906101000a900467ffffffffffffffff16612c13919061374f565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612c5357612c52612c2e565b5b8235905067ffffffffffffffff811115612c7057612c6f612c33565b5b602083019150836001820283011115612c8c57612c8b612c38565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cdc82612c93565b810181811067ffffffffffffffff82111715612cfb57612cfa612ca4565b5b80604052505050565b6000612d0e612c1a565b9050612d1a8282612cd3565b919050565b600067ffffffffffffffff821115612d3a57612d39612ca4565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b612d6881612d4b565b8114612d7357600080fd5b50565b600081359050612d8581612d5f565b92915050565b6000612d9e612d9984612d1f565b612d04565b90508083825260208201905060208402830185811115612dc157612dc0612c38565b5b835b81811015612dea5780612dd68882612d76565b845260208401935050602081019050612dc3565b5050509392505050565b600082601f830112612e0957612e08612c2e565b5b8135612e19848260208601612d8b565b91505092915050565b6000819050919050565b612e3581612e22565b8114612e4057600080fd5b50565b600081359050612e5281612e2c565b92915050565b600080fd5b600063ffffffff82169050919050565b612e7681612e5d565b8114612e8157600080fd5b50565b600081359050612e9381612e6d565b92915050565b60008115159050919050565b612eae81612e99565b8114612eb957600080fd5b50565b600081359050612ecb81612ea5565b92915050565b600060a08284031215612ee757612ee6612e58565b5b612ef160a0612d04565b90506000612f0184828501612e84565b6000830152506020612f1584828501612d76565b6020830152506040612f2984828501612d76565b6040830152506060612f3d84828501612ebc565b6060830152506080612f5184828501612e43565b60808301525092915050565b6000806000806000806000610120888a031215612f7d57612f7c612c24565b5b600088013567ffffffffffffffff811115612f9b57612f9a612c29565b5b612fa78a828b01612c3d565b9750975050602088013567ffffffffffffffff811115612fca57612fc9612c29565b5b612fd68a828b01612df4565b955050604088013567ffffffffffffffff811115612ff757612ff6612c29565b5b6130038a828b01612c3d565b945094505060606130168a828b01612e43565b92505060806130278a828b01612ed1565b91505092959891949750929550565b60008083601f84011261304c5761304b612c2e565b5b8235905067ffffffffffffffff81111561306957613068612c33565b5b60208301915083602082028301111561308557613084612c38565b5b9250929050565b600080600080600060e086880312156130a8576130a7612c24565b5b600086013567ffffffffffffffff8111156130c6576130c5612c29565b5b6130d288828901612c3d565b9550955050602086013567ffffffffffffffff8111156130f5576130f4612c29565b5b61310188828901613036565b9350935050604061311488828901612ed1565b9150509295509295909350565b60008060008060e0858703121561313b5761313a612c24565b5b600085013567ffffffffffffffff81111561315957613158612c29565b5b61316587828801613036565b9450945050602061317887828801612e43565b925050604061318987828801612ed1565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c082613195565b9050919050565b6131d0816131b5565b81146131db57600080fd5b50565b6000813590506131ed816131c7565b92915050565b600080600080600061010086880312156132105761320f612c24565b5b600061321e888289016131de565b955050602086013567ffffffffffffffff81111561323f5761323e612c29565b5b61324b88828901613036565b9450945050604061325e88828901612e43565b925050606061326f88828901612ed1565b9150509295509295909350565b600080600060e0848603121561329557613294612c24565b5b60006132a3868287016131de565b935050602084013567ffffffffffffffff8111156132c4576132c3612c29565b5b6132d086828701612df4565b92505060406132e186828701612ed1565b9150509250925092565b60006020828403121561330157613300612c24565b5b600061330f84828501612e43565b91505092915050565b61332181612d4b565b82525050565b600060208201905061333c6000830184613318565b92915050565b60008060008060e0858703121561335c5761335b612c24565b5b600061336a87828801612d76565b945050602085013567ffffffffffffffff81111561338b5761338a612c29565b5b61339787828801613036565b935093505060406133aa87828801612ed1565b91505092959194509250565b60008060008060e085870312156133d0576133cf612c24565b5b600085013567ffffffffffffffff8111156133ee576133ed612c29565b5b6133fa87828801612c3d565b9450945050602061340d87828801612e43565b925050604061341e87828801612ed1565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c282612d4b565b915067ffffffffffffffff82036134dc576134db613488565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352182612e22565b915061352c83612e22565b92508261353c5761353b6134e7565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b600061356d8385613547565b935061357a838584613552565b82840190509392505050565b60008160601b9050919050565b600061359e82613586565b9050919050565b60006135b082613593565b9050919050565b6135c86135c3826131b5565b6135a5565b82525050565b60006135db828587613561565b91506135e782846135b7565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b61362781612d4b565b82525050565b6000613639838361361e565b60208301905092915050565b6000602082019050919050565b600061365d826135f8565b6136678185613603565b93506136728361360e565b8060005b838110156136a357815161368a888261362d565b975061369583613645565b925050600181019050613676565b5085935050505092915050565b60006136bc8284613652565b915081905092915050565b60006136d382856135b7565b6014820191506136e38284613652565b91508190509392505050565b60006136fa82612e22565b915061370583612e22565b925082820190508082111561371d5761371c613488565b5b92915050565b600061372e82612e5d565b915063ffffffff820361374457613743613488565b5b600182019050919050565b600061375a82612d4b565b915061376583612d4b565b9250828201905067ffffffffffffffff81111561378557613784613488565b5b92915050565b600082825260208201905092915050565b6137a581612d4b565b82525050565b60006137b7838361379c565b60208301905092915050565b60006137ce826135f8565b6137d8818561378b565b93506137e38361360e565b8060005b838110156138145781516137fb88826137ab565b975061380683613645565b9250506001810190506137e7565b5085935050505092915050565b600082825260208201905092915050565b600061383e8385613821565b935061384b838584613552565b61385483612c93565b840190509392505050565b61386881612e5d565b82525050565b61387781612e99565b82525050565b61388681612e22565b82525050565b60a0820160008201516138a2600085018261385f565b5060208201516138b5602085018261379c565b5060408201516138c8604085018261379c565b5060608201516138db606085018261386e565b5060808201516138ee608085018261387d565b50505050565b600061010082019050818103600083015261390f81896137c3565b90508181036020830152613924818789613832565b90508181036040830152613939818587613832565b9050613948606083018461388c565b979650505050505050565b6000819050919050565b600061396c6020840184612d76565b905092915050565b6000602082019050919050565b600061398d8385613603565b935061399882613953565b8060005b858110156139d1576139ae828461395d565b6139b8888261362d565b97506139c383613974565b92505060018101905061399c565b5085925050509392505050565b60006139eb828486613981565b91508190509392505050565b6000613a0282612e5d565b915060008203613a1557613a14613488565b5b600182039050919050565b6000613a2c838561378b565b9350613a3782613953565b8060005b85811015613a7057613a4d828461395d565b613a5788826137ab565b9750613a6283613974565b925050600181019050613a3b565b5085925050509392505050565b600060e0820190508181036000830152613a98818789613a20565b90508181036020830152613aad818587613832565b9050613abc604083018461388c565b9695505050505050565b600060c0820190508181036000830152613ae1818587613a20565b9050613af0602083018461388c565b949350505050565b600060208284031215613b0e57613b0d612c24565b5b6000613b1c84828501612d76565b91505092915050565b6000613b3082612d4b565b9150613b3b83612d4b565b9250828203905067ffffffffffffffff811115613b5b57613b5a613488565b5b92915050565b6000613b6c82612d4b565b9150613b7783612d4b565b9250828202613b8581612d4b565b9150808214613b9757613b96613488565b5b5092915050565b6000613ba982612e22565b9150613bb483612e22565b9250828203905081811115613bcc57613bcb613488565b5b92915050565b613bdb81612e22565b82525050565b600060e0820190508181036000830152613bfc818688613a20565b9050613c0b6020830185613bd2565b613c18604083018461388c565b95945050505050565b600060c0820190508181036000830152613c3b81856137c3565b9050613c4a602083018461388c565b9392505050565b6000613c5c82612d4b565b9150613c6783612d4b565b925082613c7757613c766134e7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cc957607f821691505b602082108103613cdc57613cdb613c82565b5b50919050565b60008190508160005260206000209050919050565b60008154613d0481613cb1565b613d0e8186613821565b94506001821660008114613d295760018114613d3f57613d72565b60ff198316865281151560200286019350613d72565b613d4885613ce2565b60005b83811015613d6a57815481890152600182019150602081019050613d4b565b808801955050505b50505092915050565b600060e0820190508181036000830152613d958187613cf7565b90508181036020830152613daa818587613a20565b9050613db9604083018461388c565b95945050505050565b600081519050919050565b60005b83811015613deb578082015181840152602081019050613dd0565b60008484015250505050565b6000613e0282613dc2565b613e0c8185613821565b9350613e1c818560208601613dcd565b613e2581612c93565b840191505092915050565b6000610120820190508181036000830152613e4b8189613df7565b90508181036020830152613e5f81886137c3565b90508181036040830152613e74818688613832565b9050613e836060830185613bd2565b613e90608083018461388c565b979650505050505050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ee87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613eab565b613ef28683613eab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f2f613f2a613f2584612e22565b613f0a565b612e22565b9050919050565b6000819050919050565b613f4983613f14565b613f5d613f5582613f36565b848454613eb8565b825550505050565b600090565b613f72613f65565b613f7d818484613f40565b505050565b5b81811015613fa157613f96600082613f6a565b600181019050613f83565b5050565b601f821115613fe657613fb781613ce2565b613fc084613e9b565b81016020851015613fcf578190505b613fe3613fdb85613e9b565b830182613f82565b50505b505050565b600082821c905092915050565b600061400960001984600802613feb565b1980831691505092915050565b60006140228383613ff8565b9150826002028217905092915050565b61403b82613dc2565b67ffffffffffffffff81111561405457614053612ca4565b5b61405e8254613cb1565b614069828285613fa5565b600060209050601f83116001811461409c576000841561408a578287015190505b6140948582614016565b8655506140fc565b601f1984166140aa86613ce2565b60005b828110156140d2578489015182556001820191506020850194506020810190506140ad565b868310156140ef57848901516140eb601f891682613ff8565b8355505b6001600288020188555050505b505050505050565b60008160e01b9050919050565b600061411c82614104565b9050919050565b61413461412f82612e5d565b614111565b82525050565b60008160c01b9050919050565b60006141528261413a565b9050919050565b61416a61416582612d4b565b614147565b82525050565b6000819050919050565b61418b61418682612e22565b614170565b82525050565b60008160f81b9050919050565b60006141a982614191565b9050919050565b60006141bb8261419e565b9050919050565b6141d36141ce82612e99565b6141b0565b82525050565b60006141e58288614123565b6004820191506141f58287614159565b6008820191506142058286614159565b600882019150614215828561417a565b60208201915061422582846141c2565b6001820191508190509695505050505050565b600061424382612e5d565b915061424e83612e5d565b9250828203905063ffffffff81111561426a57614269613488565b5b92915050565b600061427b82612e5d565b915061428683612e5d565b9250828201905063ffffffff8111156142a2576142a1613488565b5b92915050565b6142b1816131b5565b82525050565b60006060820190506142cc60008301866142a8565b6142d960208301856142a8565b6142e66040830184613bd2565b949350505050565b6000815190506142fd81612ea5565b92915050565b60006020828403121561431957614318612c24565b5b6000614327848285016142ee565b91505092915050565b600060408201905061434560008301856142a8565b6143526020830184613bd2565b9392505050565b6000614365828761417a565b602082019150614375828661417a565b60208201915061438582856135b7565b601482019150614395828461417a565b60208201915081905095945050505050565b60006143b282612e22565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143e4576143e3613488565b5b600182019050919050565b60006143fb828661417a565b60208201915061440b82856135b7565b60148201915061441b828461417a565b602082019150819050949350505050565b600061443782612e22565b915061444283612e22565b925082820261445081612e22565b9150828204841483151761446757614466613488565b5b5092915050565b600061447982612e22565b91506000820361448c5761448b613488565b5b60018203905091905056fea2646970667358221220e750a92e16948e20f906bdcf6a36192e432c2c112e7f68f62939a37a697d043564736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100a95760003560e01c8063686e682c11610071578063686e682c14610116578063bc26e7e514610132578063bf0f2fb21461014e578063bfbdaffd1461016a578063d7b8edbd1461019a578063d86eda8c146101b6576100a9565b806301ddff09146100ae57806306e8fb9c146100b857806312b3fc19146100d45780635fec6dd0146100f0578063626b6b8d1461010c575b600080fd5b6100b66101d2565b005b6100d260048036038101906100cd9190612f5d565b61025f565b005b6100ee60048036038101906100e9919061308c565b610d2a565b005b61010a60048036038101906101059190613121565b610feb565b005b6101146112aa565b005b610130600480360381019061012b9190613121565b6112ac565b005b61014c600480360381019061014791906131f3565b611613565b005b6101686004803603810190610163919061327c565b61171c565b005b610184600480360381019061017f91906132eb565b61197c565b6040516101919190613327565b60405180910390f35b6101b460048036038101906101af9190613342565b6119ba565b005b6101d060048036038101906101cb91906133b6565b611a6b565b005b60006101dc611c6f565b905060005b6001805490508167ffffffffffffffff16101561025b576000801b82600101600060018467ffffffffffffffff16815481106102205761021f61342a565b5b90600052602060002001548152602001908152602001600020541461024857610247613459565b5b8080610253906134b7565b9150506101e1565b5050565b6000610269611c6f565b90506000610275611cab565b9050600087519050600467ffffffffffffffff168110806102a05750600d67ffffffffffffffff1681115b806102c257506001600367ffffffffffffffff16826102bf9190613516565b14155b156102f9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a905014610340576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a33604051602001610357939291906135ce565b6040516020818303038152906040528051906020012090506000801b84600001600083815260200190815260200160002054146103c0576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016103d391906136b0565b6040516020818303038152906040528051906020012060001c1760001b84600001600083815260200190815260200160002081905550506000338960405160200161041f9291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036104f7576000866000015163ffffffff1614158061048457506000866020015167ffffffffffffffff1614155b8061049e57506000866040015167ffffffffffffffff1614155b806104ae57506000866080015114155b806104bb57508560600151155b156104f2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610542565b61050086611ce7565b8114610538576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61054186611d33565b5b50858560800181815161055591906136ef565b915081815250506000856060015115610bd7576000805b84811015610ba15760008c82815181106105895761058861342a565b5b60200260200101519050856001836105a191906136ef565b101561068f578c6001836105b591906136ef565b815181106105c6576105c561342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff16111561061b576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c60018361062991906136ef565b8151811061063a5761063961342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361068e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610876576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156109705760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561093757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561096e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b61097981611d71565b87600001600c9054906101000a900463ffffffff1663ffffffff168160000180516109a390613723565b63ffffffff16908163ffffffff1681525063ffffffff1611156109f2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80608001516020015184610a06919061374f565b9350806020015185610a18919061374f565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061056c565b50610bbf81610baf87611e39565b89611eae9092919063ffffffff16565b610bd560018087611efe9092919063ffffffff16565b505b856000018051610be690613723565b63ffffffff16908163ffffffff1681525050610c59818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15610c90576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9986611ce7565b8560010160008481526020019081526020016000208190555060008714610cc457610cc387612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610d14969594939291906138f4565b60405180910390a2505050505050505050505050565b6000610d34611c6f565b90506000868633604051602001610d4d939291906135ce565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610dc5576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610ddb9291906139de565b604051602081830303815290604052805190602001201690508083831614610e2f576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e89338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a612156909392919063ffffffff16565b9050866060015115610f2c576000610ee68a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a61222e565b5090506000610ef3611cab565b9050610f1282610f0283611e39565b8b611eae9092919063ffffffff16565b610f296000600183611efe9092919063ffffffff16565b50505b866000018051610f3b906139f7565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610f6f87611ce7565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610fd6959493929190613a7d565b60405180910390a25050505050505050505050565b6000610ff5611c6f565b9050600061105133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905082606001511561108f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611099611cab565b90506000806110f0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600188600001518861222e565b91509150868660800181815161110691906136ef565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff168152505061114783611e39565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506111806001876000015185611efe9092919063ffffffff16565b6111e1818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15611218576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61122186611ce7565b85600101600086815260200190815260200160002081905550600087111561124d5761124c87612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a8960405161129793929190613ac6565b60405180910390a2505050505050505050565b565b60006112b6611c6f565b9050600061131233878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905061131d83611d33565b6000611327611cab565b905060008460600151156114765760008089899050905060005b81811015611455576000611353611c6f565b60060160008d8d8581811061136b5761136a61342a565b5b90506020020160208101906113809190613af8565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff16436113e69190613b25565b6113f09190613b61565b8160020160000160049054906101000a900467ffffffffffffffff16611416919061374f565b84611421919061374f565b93508060000160049054906101000a900467ffffffffffffffff1685611447919061374f565b945081600101915050611341565b50506114748161146485611e39565b88611eae9092919063ffffffff16565b505b85856080015110156114b4576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516114c69190613b9e565b91508181525050846060015180156114e957506000856000015163ffffffff1614155b80156115525750611551818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611fdd90949392919063ffffffff16565b5b15611589576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159285611ce7565b846001016000858152602001908152602001600020819055506115b5338761240a565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516116019493929190613be1565b60405180910390a25050505050505050565b600061161d611c6f565b9050600061167987878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b9050838360800181815161168d91906136ef565b9150818152505061169d83611ce7565b826001016000838152602001908152602001600020819055506116bf84612072565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a28787878760405161170b9493929190613be1565b60405180910390a250505050505050565b6000611726611c6f565b9050600061174185858486612156909392919063ffffffff16565b905061174c83611d33565b6000611756611cab565b905060008061176c87600088600001518861222e565b9150915061178d8261177d85611e39565b886124ed9092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156118295750611827828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611fdd90949392919063ffffffff16565b155b15611860576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61187a6000886000015186611efe9092919063ffffffff16565b6000876080015114611899578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506118f587611ce7565b866001016000878152602001908152602001600020819055506000811461192157611920338261240a565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611969929190613c21565b60405180910390a2505050505050505050565b6002818154811061198c57600080fd5b9060005260206000209060049182820401919006600802915054906101000a900467ffffffffffffffff1681565b600080549050846119cb9190613c51565b93503073ffffffffffffffffffffffffffffffffffffffff166312b3fc1960008667ffffffffffffffff1681548110611a0757611a0661342a565b5b906000526020600020018585856040518563ffffffff1660e01b8152600401611a339493929190613d7b565b600060405180830381600087803b158015611a4d57600080fd5b505af1158015611a61573d6000803e3d6000fd5b5050505050505050565b6000611a75611c6f565b90506000611a816125a1565b90506000611a8d6126b8565b905060003382604051602001611aa49291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b8103611b5c576000866000019063ffffffff16908163ffffffff16815250506000866020019067ffffffffffffffff16908167ffffffffffffffff16815250506000866040019067ffffffffffffffff16908167ffffffffffffffff168152505060008660800181815250506001866060019015159081151581525050611b7f565b611b6586611ce7565b856001016000848152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff166306e8fb9c85858c8c8c8c6040518763ffffffff1660e01b8152600401611bc296959493929190613e30565b600060405180830381600087803b158015611bdc57600080fd5b505af1925050508015611bed575060015b611c05576000611c0057611bff613459565b5b611c64565b600084908060018154018082558091505060019003906000526020600020016000909190919091509081611c399190614032565b5060018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c611ca29190613b9e565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c611cde9190613b9e565b90508091505090565b600081600001518260200151836040015184608001518560600151604051602001611d169594939291906141d9565b604051602081830303815290604052805190602001209050919050565b8060600151611d6e576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611d8c9190614238565b63ffffffff16611d9c9190613b61565b9050808260800151602001818151611db4919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681611de79190613b61565b8260800151604001818151611dfc919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611e7a9190613b9e565b611e849190613b61565b8260000160189054906101000a900467ffffffffffffffff16611ea7919061374f565b9050919050565b611eb98383836124ed565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611f07836128e6565b81611f5257808360000160048282829054906101000a900463ffffffff16611f2f9190614238565b92506101000a81548163ffffffff021916908363ffffffff160217905550611fd8565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611f7c9190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611fd7576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614612068576120038267ffffffffffffffff1661293f565b866080015110156120175760019050612069565b6000866000015163ffffffff168587612030919061374f565b8561203b9190613b61565b6120459190613b61565b905061205a8167ffffffffffffffff1661293f565b876080015110915050612069565b5b95945050505050565b61207a611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016120da939291906142b7565b6020604051808303816000875af11580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d9190614303565b612153576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600080848460405160200161216c9291906136c7565b604051602081830303815290604052805190602001209050600061218f87611ce7565b905060008460010160008481526020019081526020016000205490506000801b81036121e7576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114612220576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b86518110156124005760008782815181106122525761225161342a565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16146123ca576122b781612961565b8761230257868160000160008282829054906101000a900463ffffffff166122df9190614238565b92506101000a81548163ffffffff021916908363ffffffff1602179055506123a3565b61230a611cab565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff166123479190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1611156123a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff16846123c7919061374f565b93505b8060020160000160049054906101000a900467ffffffffffffffff16856123f1919061374f565b94508260010192505050612234565b5094509492505050565b612412611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612470929190614330565b6020604051808303816000875af115801561248f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b39190614303565b6124e9576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff1684602001518361250a9190613b25565b6125149190613b61565b9050600081856000015163ffffffff168660400151866125349190613b25565b61253e9190613b61565b612548919061374f565b905084608001516125628267ffffffffffffffff1661293f565b1161258e5761257a8167ffffffffffffffff1661293f565b85608001516125899190613b9e565b612591565b60005b8560800181815250505050505050565b60606000603067ffffffffffffffff8111156125c0576125bf612ca4565b5b6040519080825280601f01601f1916602001820160405280156125f25781602001600182028036833780820191505090505b50905060005b60308110156126985761010060035442338460405160200161261d9493929190614359565b6040516020818303038152906040528051906020012060001c6126409190613516565b60f81b8282815181106126565761265561342a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612690906143a7565b9150506125f8565b50600360008154809291906126ac906143a7565b91905055508091505090565b60606000600467ffffffffffffffff1642336003546040516020016126df939291906143ef565b6040516020818303038152906040528051906020012060001c6127029190613516565b90506000600382612713919061442c565b600461271f91906136ef565b905060036000815480929190612734906143a7565b91905055508067ffffffffffffffff81111561275357612752612ca4565b5b6040519080825280602002602001820160405280156127815781602001602082028036833780820191505090505b50925060005b818110156128e0576000805b600360008154809291906127a6906143a7565b91905055506127b3612aa0565b91506127be82612aeb565b15905080156127935760008390505b60008111801561281657508267ffffffffffffffff16876001836127f19190613b9e565b815181106128025761280161342a565b5b602002602001015167ffffffffffffffff16115b1561289457865181101561288157866001826128329190613b9e565b815181106128435761284261342a565b5b602002602001015187828151811061285e5761285d61342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061288c9061446e565b9150506127cd565b828782815181106128a8576128a761342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505050505080806128d8906143a7565b915050612787565b50505090565b6128ef81612b80565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff1661295a919061442c565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff164361299f9190614238565b63ffffffff166129af9190613b61565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166129db919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff1681612a279190613b61565b82600201600001600c8282829054906101000a900467ffffffffffffffff16612a50919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b6000680100000000000000004233600354604051602001612ac3939291906143ef565b6040516020818303038152906040528051906020012060001c612ae69190613516565b905090565b600080600090505b600280549050811015612b75578267ffffffffffffffff1660028281548110612b1f57612b1e61342a565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1603612b62576001915050612b7b565b8080612b6d906143a7565b915050612af3565b50600090505b919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612bdc9190613b25565b612be69190613b61565b612bf09190613b61565b8260010160009054906101000a900467ffffffffffffffff16612c13919061374f565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612c5357612c52612c2e565b5b8235905067ffffffffffffffff811115612c7057612c6f612c33565b5b602083019150836001820283011115612c8c57612c8b612c38565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cdc82612c93565b810181811067ffffffffffffffff82111715612cfb57612cfa612ca4565b5b80604052505050565b6000612d0e612c1a565b9050612d1a8282612cd3565b919050565b600067ffffffffffffffff821115612d3a57612d39612ca4565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b612d6881612d4b565b8114612d7357600080fd5b50565b600081359050612d8581612d5f565b92915050565b6000612d9e612d9984612d1f565b612d04565b90508083825260208201905060208402830185811115612dc157612dc0612c38565b5b835b81811015612dea5780612dd68882612d76565b845260208401935050602081019050612dc3565b5050509392505050565b600082601f830112612e0957612e08612c2e565b5b8135612e19848260208601612d8b565b91505092915050565b6000819050919050565b612e3581612e22565b8114612e4057600080fd5b50565b600081359050612e5281612e2c565b92915050565b600080fd5b600063ffffffff82169050919050565b612e7681612e5d565b8114612e8157600080fd5b50565b600081359050612e9381612e6d565b92915050565b60008115159050919050565b612eae81612e99565b8114612eb957600080fd5b50565b600081359050612ecb81612ea5565b92915050565b600060a08284031215612ee757612ee6612e58565b5b612ef160a0612d04565b90506000612f0184828501612e84565b6000830152506020612f1584828501612d76565b6020830152506040612f2984828501612d76565b6040830152506060612f3d84828501612ebc565b6060830152506080612f5184828501612e43565b60808301525092915050565b6000806000806000806000610120888a031215612f7d57612f7c612c24565b5b600088013567ffffffffffffffff811115612f9b57612f9a612c29565b5b612fa78a828b01612c3d565b9750975050602088013567ffffffffffffffff811115612fca57612fc9612c29565b5b612fd68a828b01612df4565b955050604088013567ffffffffffffffff811115612ff757612ff6612c29565b5b6130038a828b01612c3d565b945094505060606130168a828b01612e43565b92505060806130278a828b01612ed1565b91505092959891949750929550565b60008083601f84011261304c5761304b612c2e565b5b8235905067ffffffffffffffff81111561306957613068612c33565b5b60208301915083602082028301111561308557613084612c38565b5b9250929050565b600080600080600060e086880312156130a8576130a7612c24565b5b600086013567ffffffffffffffff8111156130c6576130c5612c29565b5b6130d288828901612c3d565b9550955050602086013567ffffffffffffffff8111156130f5576130f4612c29565b5b61310188828901613036565b9350935050604061311488828901612ed1565b9150509295509295909350565b60008060008060e0858703121561313b5761313a612c24565b5b600085013567ffffffffffffffff81111561315957613158612c29565b5b61316587828801613036565b9450945050602061317887828801612e43565b925050604061318987828801612ed1565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c082613195565b9050919050565b6131d0816131b5565b81146131db57600080fd5b50565b6000813590506131ed816131c7565b92915050565b600080600080600061010086880312156132105761320f612c24565b5b600061321e888289016131de565b955050602086013567ffffffffffffffff81111561323f5761323e612c29565b5b61324b88828901613036565b9450945050604061325e88828901612e43565b925050606061326f88828901612ed1565b9150509295509295909350565b600080600060e0848603121561329557613294612c24565b5b60006132a3868287016131de565b935050602084013567ffffffffffffffff8111156132c4576132c3612c29565b5b6132d086828701612df4565b92505060406132e186828701612ed1565b9150509250925092565b60006020828403121561330157613300612c24565b5b600061330f84828501612e43565b91505092915050565b61332181612d4b565b82525050565b600060208201905061333c6000830184613318565b92915050565b60008060008060e0858703121561335c5761335b612c24565b5b600061336a87828801612d76565b945050602085013567ffffffffffffffff81111561338b5761338a612c29565b5b61339787828801613036565b935093505060406133aa87828801612ed1565b91505092959194509250565b60008060008060e085870312156133d0576133cf612c24565b5b600085013567ffffffffffffffff8111156133ee576133ed612c29565b5b6133fa87828801612c3d565b9450945050602061340d87828801612e43565b925050604061341e87828801612ed1565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c282612d4b565b915067ffffffffffffffff82036134dc576134db613488565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352182612e22565b915061352c83612e22565b92508261353c5761353b6134e7565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b600061356d8385613547565b935061357a838584613552565b82840190509392505050565b60008160601b9050919050565b600061359e82613586565b9050919050565b60006135b082613593565b9050919050565b6135c86135c3826131b5565b6135a5565b82525050565b60006135db828587613561565b91506135e782846135b7565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b61362781612d4b565b82525050565b6000613639838361361e565b60208301905092915050565b6000602082019050919050565b600061365d826135f8565b6136678185613603565b93506136728361360e565b8060005b838110156136a357815161368a888261362d565b975061369583613645565b925050600181019050613676565b5085935050505092915050565b60006136bc8284613652565b915081905092915050565b60006136d382856135b7565b6014820191506136e38284613652565b91508190509392505050565b60006136fa82612e22565b915061370583612e22565b925082820190508082111561371d5761371c613488565b5b92915050565b600061372e82612e5d565b915063ffffffff820361374457613743613488565b5b600182019050919050565b600061375a82612d4b565b915061376583612d4b565b9250828201905067ffffffffffffffff81111561378557613784613488565b5b92915050565b600082825260208201905092915050565b6137a581612d4b565b82525050565b60006137b7838361379c565b60208301905092915050565b60006137ce826135f8565b6137d8818561378b565b93506137e38361360e565b8060005b838110156138145781516137fb88826137ab565b975061380683613645565b9250506001810190506137e7565b5085935050505092915050565b600082825260208201905092915050565b600061383e8385613821565b935061384b838584613552565b61385483612c93565b840190509392505050565b61386881612e5d565b82525050565b61387781612e99565b82525050565b61388681612e22565b82525050565b60a0820160008201516138a2600085018261385f565b5060208201516138b5602085018261379c565b5060408201516138c8604085018261379c565b5060608201516138db606085018261386e565b5060808201516138ee608085018261387d565b50505050565b600061010082019050818103600083015261390f81896137c3565b90508181036020830152613924818789613832565b90508181036040830152613939818587613832565b9050613948606083018461388c565b979650505050505050565b6000819050919050565b600061396c6020840184612d76565b905092915050565b6000602082019050919050565b600061398d8385613603565b935061399882613953565b8060005b858110156139d1576139ae828461395d565b6139b8888261362d565b97506139c383613974565b92505060018101905061399c565b5085925050509392505050565b60006139eb828486613981565b91508190509392505050565b6000613a0282612e5d565b915060008203613a1557613a14613488565b5b600182039050919050565b6000613a2c838561378b565b9350613a3782613953565b8060005b85811015613a7057613a4d828461395d565b613a5788826137ab565b9750613a6283613974565b925050600181019050613a3b565b5085925050509392505050565b600060e0820190508181036000830152613a98818789613a20565b90508181036020830152613aad818587613832565b9050613abc604083018461388c565b9695505050505050565b600060c0820190508181036000830152613ae1818587613a20565b9050613af0602083018461388c565b949350505050565b600060208284031215613b0e57613b0d612c24565b5b6000613b1c84828501612d76565b91505092915050565b6000613b3082612d4b565b9150613b3b83612d4b565b9250828203905067ffffffffffffffff811115613b5b57613b5a613488565b5b92915050565b6000613b6c82612d4b565b9150613b7783612d4b565b9250828202613b8581612d4b565b9150808214613b9757613b96613488565b5b5092915050565b6000613ba982612e22565b9150613bb483612e22565b9250828203905081811115613bcc57613bcb613488565b5b92915050565b613bdb81612e22565b82525050565b600060e0820190508181036000830152613bfc818688613a20565b9050613c0b6020830185613bd2565b613c18604083018461388c565b95945050505050565b600060c0820190508181036000830152613c3b81856137c3565b9050613c4a602083018461388c565b9392505050565b6000613c5c82612d4b565b9150613c6783612d4b565b925082613c7757613c766134e7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cc957607f821691505b602082108103613cdc57613cdb613c82565b5b50919050565b60008190508160005260206000209050919050565b60008154613d0481613cb1565b613d0e8186613821565b94506001821660008114613d295760018114613d3f57613d72565b60ff198316865281151560200286019350613d72565b613d4885613ce2565b60005b83811015613d6a57815481890152600182019150602081019050613d4b565b808801955050505b50505092915050565b600060e0820190508181036000830152613d958187613cf7565b90508181036020830152613daa818587613a20565b9050613db9604083018461388c565b95945050505050565b600081519050919050565b60005b83811015613deb578082015181840152602081019050613dd0565b60008484015250505050565b6000613e0282613dc2565b613e0c8185613821565b9350613e1c818560208601613dcd565b613e2581612c93565b840191505092915050565b6000610120820190508181036000830152613e4b8189613df7565b90508181036020830152613e5f81886137c3565b90508181036040830152613e74818688613832565b9050613e836060830185613bd2565b613e90608083018461388c565b979650505050505050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ee87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613eab565b613ef28683613eab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f2f613f2a613f2584612e22565b613f0a565b612e22565b9050919050565b6000819050919050565b613f4983613f14565b613f5d613f5582613f36565b848454613eb8565b825550505050565b600090565b613f72613f65565b613f7d818484613f40565b505050565b5b81811015613fa157613f96600082613f6a565b600181019050613f83565b5050565b601f821115613fe657613fb781613ce2565b613fc084613e9b565b81016020851015613fcf578190505b613fe3613fdb85613e9b565b830182613f82565b50505b505050565b600082821c905092915050565b600061400960001984600802613feb565b1980831691505092915050565b60006140228383613ff8565b9150826002028217905092915050565b61403b82613dc2565b67ffffffffffffffff81111561405457614053612ca4565b5b61405e8254613cb1565b614069828285613fa5565b600060209050601f83116001811461409c576000841561408a578287015190505b6140948582614016565b8655506140fc565b601f1984166140aa86613ce2565b60005b828110156140d2578489015182556001820191506020850194506020810190506140ad565b868310156140ef57848901516140eb601f891682613ff8565b8355505b6001600288020188555050505b505050505050565b60008160e01b9050919050565b600061411c82614104565b9050919050565b61413461412f82612e5d565b614111565b82525050565b60008160c01b9050919050565b60006141528261413a565b9050919050565b61416a61416582612d4b565b614147565b82525050565b6000819050919050565b61418b61418682612e22565b614170565b82525050565b60008160f81b9050919050565b60006141a982614191565b9050919050565b60006141bb8261419e565b9050919050565b6141d36141ce82612e99565b6141b0565b82525050565b60006141e58288614123565b6004820191506141f58287614159565b6008820191506142058286614159565b600882019150614215828561417a565b60208201915061422582846141c2565b6001820191508190509695505050505050565b600061424382612e5d565b915061424e83612e5d565b9250828203905063ffffffff81111561426a57614269613488565b5b92915050565b600061427b82612e5d565b915061428683612e5d565b9250828201905063ffffffff8111156142a2576142a1613488565b5b92915050565b6142b1816131b5565b82525050565b60006060820190506142cc60008301866142a8565b6142d960208301856142a8565b6142e66040830184613bd2565b949350505050565b6000815190506142fd81612ea5565b92915050565b60006020828403121561431957614318612c24565b5b6000614327848285016142ee565b91505092915050565b600060408201905061434560008301856142a8565b6143526020830184613bd2565b9392505050565b6000614365828761417a565b602082019150614375828661417a565b60208201915061438582856135b7565b601482019150614395828461417a565b60208201915081905095945050505050565b60006143b282612e22565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143e4576143e3613488565b5b600182019050919050565b60006143fb828661417a565b60208201915061440b82856135b7565b60148201915061441b828461417a565b602082019150819050949350505050565b600061443782612e22565b915061444283612e22565b925082820261445081612e22565b9150828204841483151761446757614466613488565b5b5092915050565b600061447982612e22565b91506000820361448c5761448b613488565b5b60018203905091905056fea2646970667358221220e750a92e16948e20f906bdcf6a36192e432c2c112e7f68f62939a37a697d043564736f6c63430008120033", "userdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}}, "notice": null}, "devdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVClusters.sol:SSVClusters": {"srcmap": "347:11155:10:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "347:11155:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;722:4084;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4812:1524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7889:1278;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9707:1793;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9173:528;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6342:1541;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;722:4084;945:21;969:17;:15;:17::i;:::-;945:41;;996:26;1025:25;:23;:25::i;:::-;996:54;;1061:23;1087:11;:18;1061:44;;550:1;1150:38;;:15;:38;:96;;;;604:2;1208:38;;:15;:38;1150:96;:162;;;;1311:1;662;1266:41;;:15;:41;;;;:::i;:::-;:46;;1150:162;1129:264;;;1352:26;;;;;;;;;;;;;;1129:264;713:2;1411:37;;:9;;:16;;:37;1407:74;;1457:24;;;;;;;;;;;;;;1407:74;1496:16;1542:9;;1553:10;1525:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1515:50;;;;;;1496:69;;1620:1;1612:10;;1584:1;:14;;:24;1599:8;1584:24;;;;;;;;;;;;:38;1580:108;;1649:24;;;;;;;;;;;;;;1580:108;1797:4;1772:11;1755:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;1745:40;;;;;;1737:49;;:65;1729:74;;1702:1;:14;;:24;1717:8;1702:24;;;;;;;;;;;:101;;;;1115:715;1839:21;1890:10;1902:11;1873:41;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1863:52;;;;;;1839:76;;1940:19;1962:1;:10;;:25;1973:13;1962:25;;;;;;;;;;;;1940:47;;2028:1;2020:10;;2005:11;:25;2001:576;;2101:1;2075:7;:22;;;:27;;;;:79;;;;2153:1;2126:7;:23;;;:28;;;;2075:79;:121;;;;2195:1;2178:7;:13;;;:18;;;;2075:121;:165;;;;2239:1;2220:7;:15;;;:20;;2075:165;:204;;;;2265:7;:14;;;2264:15;2075:204;2050:319;;;2327:23;;;;;;;;;;;;;;2050:319;2001:576;;;2408:25;:7;:23;:25::i;:::-;2393:11;:40;2389:188;;2460:23;;;;;;;;;;;;;;2389:188;2522:40;:7;:38;:40::i;:::-;2001:576;1926:661;2616:6;2597:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;2633:15;2663:7;:14;;;2659:1596;;;2693:19;2732:9;2727:1400;2747:15;2743:1;:19;2727:1400;;;2784:17;2804:11;2816:1;2804:14;;;;;;;;:::i;:::-;;;;;;;;2784:34;;2870:15;2866:1;2862;:5;;;;:::i;:::-;:23;2858:333;;;2930:11;2946:1;2942;:5;;;;:::i;:::-;2930:18;;;;;;;;:::i;:::-;;;;;;;;2917:31;;:10;:31;;;2913:256;;;2987:23;;;;;;;;;;;;;;2913:256;3061:11;3077:1;3073;:5;;;;:::i;:::-;3061:18;;;;;;;;:::i;:::-;;;;;;;;3047:32;;:10;:32;;;3043:126;;3118:24;;;;;;;;;;;;;;3043:126;2858:333;3227:24;3254:1;:11;;:23;3266:10;3254:23;;;;;;;;;;;;;;;3227:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:1;3299:8;:17;;;:23;;;:28;;;3295:104;;3358:22;;;;;;;;;;;;;;3295:104;3420:8;:20;;;3416:280;;;3464:19;3486:1;:20;;:32;3507:10;3486:32;;;;;;;;;;;;;;;;;;;;;;;;;3464:54;;3567:1;3544:25;;:11;:25;;;;:54;;;;;3588:10;3573:25;;:11;:25;;;;3544:54;3540:138;;;3633:22;;;;;;;;;;;;;;3540:138;3442:254;3416:280;3713:25;:8;:23;:25::i;:::-;3788:2;:29;;;;;;;;;;;;3760:57;;3762:8;:23;;3760:25;;;;;:::i;:::-;;;;;;;;;;:57;;;3756:133;;;3848:22;;;;;;;;;;;;;;3756:133;3922:8;:17;;;:23;;;3906:39;;;;;:::i;:::-;;;3975:8;:12;;;3963:24;;;;;:::i;:::-;;;4032:8;4006:1;:11;;:23;4018:10;4006:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4091:3;;;;;2766:1361;;2727:1400;;;;4140:68;4166:12;4180:27;:2;:25;:27::i;:::-;4140:7;:25;;:68;;;;;:::i;:::-;4223:21;4236:4;4242:1;4223:2;:12;;:21;;;;;:::i;:::-;2679:1576;2659:1596;4267:7;:22;;4265:24;;;;;:::i;:::-;;;;;;;;;;;4317:193;4357:8;4383:2;:13;;;;;;;;;;;;4414:2;:33;;;;;;;;;;;;4465:2;:31;;;;;;;;;;;;4317:7;:22;;:193;;;;;;;:::i;:::-;4300:274;;;4542:21;;;;;;;;;;;;;;4300:274;4612:25;:7;:23;:25::i;:::-;4584:1;:10;;:25;4595:13;4584:25;;;;;;;;;;;:53;;;;4662:1;4652:6;:11;4648:65;;4679:23;4695:6;4679:15;:23::i;:::-;4648:65;4743:10;4728:71;;;4755:11;4768:9;;4779:10;;4791:7;4728:71;;;;;;;;;;;:::i;:::-;;;;;;;;935:3871;;;;;722:4084;;;;;;;:::o;4812:1524::-;4976:21;5000:17;:15;:17::i;:::-;4976:41;;5028:23;5081:9;;5092:10;5064:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5054:50;;;;;;5028:76;;5115:12;5147:1;5131:19;;5130:20;5115:35;;5192:21;5216:1;:14;;:31;5231:15;5216:31;;;;;;;;;;;;5192:55;;5287:1;5279:10;;5262:13;:27;5258:88;;5312:23;;;;;;;;;;;;;;5258:88;5356:25;5427:4;5411:11;;5394:29;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5384:40;;;;;;:47;5356:75;;5509:17;5500:4;5484:13;:20;5483:43;5479:168;;5611:25;;;;;;;;;;;;;;5479:168;5657:21;5681:57;5711:10;5723:11;;5681:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:1;5681:7;:29;;:57;;;;;;:::i;:::-;5657:81;;5767:7;:14;;;5763:332;;;5802:19;5827:53;5855:11;;5827:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5868:5;5875:1;5878;5827:27;:53::i;:::-;5801:79;;;5898:26;5927:25;:23;:25::i;:::-;5898:54;;5971:68;5997:12;6011:27;:2;:25;:27::i;:::-;5971:7;:25;;:68;;;;;:::i;:::-;6058:22;6071:5;6078:1;6058:2;:12;;:22;;;;;:::i;:::-;5783:312;;5763:332;6117:7;:22;;6115:24;;;;;:::i;:::-;;;;;;;;;;;6157:1;:14;;:31;6172:15;6157:31;;;;;;;;;;;6150:38;;;6227:25;:7;:23;:25::i;:::-;6199:1;:10;;:25;6210:13;6199:25;;;;;;;;;;;:53;;;;6285:10;6268:61;;;6297:11;;6310:9;;6321:7;6268:61;;;;;;;;;;:::i;:::-;;;;;;;;4966:1370;;;;;;4812:1524;;;;;:::o;7889:1278::-;8008:21;8032:17;:15;:17::i;:::-;8008:41;;8060:21;8084:57;8114:10;8126:11;;8084:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8139:1;8084:7;:29;;:57;;;;;;:::i;:::-;8060:81;;8155:7;:14;;;8151:50;;;8178:23;;;;;;;;;;;;;;8151:50;8212:26;8241:25;:23;:25::i;:::-;8212:54;;8278:19;8299:15;8318:131;8359:11;;8318:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8384:4;8402:7;:22;;;8438:1;8318:27;:131::i;:::-;8277:172;;;;8479:6;8460:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;8512:4;8495:7;:14;;:21;;;;;;;;;;;8542:12;8526:7;:13;;:28;;;;;;;;;;;8590:27;:2;:25;:27::i;:::-;8564:7;:23;;:53;;;;;;;;;;;8628:42;8641:4;8647:7;:22;;;8628:2;:12;;:42;;;;;:::i;:::-;8698:193;8738:8;8764:2;:13;;;;;;;;;;;;8795:2;:33;;;;;;;;;;;;8846:2;:31;;;;;;;;;;;;8698:7;:22;;:193;;;;;;;:::i;:::-;8681:274;;;8923:21;;;;;;;;;;;;;;8681:274;8993:25;:7;:23;:25::i;:::-;8965:1;:10;;:25;8976:13;8965:25;;;;;;;;;;;:53;;;;9042:1;9033:6;:10;9029:64;;;9059:23;9075:6;9059:15;:23::i;:::-;9029:64;9127:10;9108:52;;;9139:11;;9152:7;9108:52;;;;;;;;:::i;:::-;;;;;;;;7998:1169;;;;;7889:1278;;;;:::o;9707:1793::-;9824:21;9848:17;:15;:17::i;:::-;9824:41;;9876:21;9900:57;9930:10;9942:11;;9900:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9955:1;9900:7;:29;;:57;;;;;;:::i;:::-;9876:81;;9967:40;:7;:38;:40::i;:::-;10018:26;10047:25;:23;:25::i;:::-;10018:54;;10083:15;10112:7;:14;;;10108:733;;;10142:19;10193:23;10219:11;;:18;;10193:44;;10260:9;10255:479;10275:15;10271:1;:19;10255:479;;;10316:25;10344:17;:15;:17::i;:::-;:27;;:43;10372:11;;10384:1;10372:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10344:43;;;;;;;;;;;;;;;10316:71;;10574:8;:12;;;;;;;;;;;;10523:8;:17;;:23;;;;;;;;;;;;10500:46;;10507:12;10500:46;;;;:::i;:::-;10499:87;;;;:::i;:::-;10449:8;:17;;:23;;;;;;;;;;;;:137;;;;:::i;:::-;10409:177;;;;;:::i;:::-;;;10620:8;:12;;;;;;;;;;;;10608:24;;;;;:::i;:::-;;;10690:3;;;;;10294:440;10255:479;;;;10175:573;10762:68;10788:12;10802:27;:2;:25;:27::i;:::-;10762:7;:25;;:68;;;;;:::i;:::-;10128:713;10108:733;10872:6;10854:7;:15;;;:24;10850:58;;;10887:21;;;;;;;;;;;;;;10850:58;10938:6;10919:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;10972:7;:14;;;:57;;;;;11028:1;11002:7;:22;;;:27;;;;10972:57;:266;;;;;11045:193;11085:8;11111:2;:13;;;;;;;;;;;;11142:2;:33;;;;;;;;;;;;11193:2;:31;;;;;;;;;;;;11045:7;:22;;:193;;;;;;;:::i;:::-;10972:266;10955:347;;;11270:21;;;;;;;;;;;;;;10955:347;11340:25;:7;:23;:25::i;:::-;11312:1;:10;;:25;11323:13;11312:25;;;;;;;;;;;:53;;;;11376:43;11400:10;11412:6;11376:23;:43::i;:::-;11452:10;11435:58;;;11464:11;;11477:6;11485:7;11435:58;;;;;;;;;:::i;:::-;;;;;;;;9814:1686;;;;9707:1793;;;;:::o;9173:528::-;9349:21;9373:17;:15;:17::i;:::-;9349:41;;9401:21;9425:59;9455:12;9469:11;;9425:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9482:1;9425:7;:29;;:59;;;;;;:::i;:::-;9401:83;;9514:6;9495:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;9559;:7;:23;:25::i;:::-;9531:1;:10;;:25;9542:13;9531:25;;;;;;;;;;;:53;;;;9595:23;9611:6;9595:15;:23::i;:::-;9651:12;9634:60;;;9665:11;;9678:6;9686:7;9634:60;;;;;;;;;:::i;:::-;;;;;;;;9339:362;;9173:528;;;;;:::o;6342:1541::-;6464:21;6488:17;:15;:17::i;:::-;6464:41;;6516:21;6540:59;6570:12;6584:11;6597:1;6540:7;:29;;:59;;;;;;:::i;:::-;6516:83;;6609:40;:7;:38;:40::i;:::-;6660:26;6689:25;:23;:25::i;:::-;6660:54;;6726:19;6747:15;6766:132;6807:11;6832:5;6851:7;:22;;;6887:1;6766:27;:132::i;:::-;6725:173;;;;6909:64;6931:12;6945:27;:2;:25;:27::i;:::-;6909:7;:21;;:64;;;;;:::i;:::-;6984:27;7055:10;7039:26;;:12;:26;;;;:236;;;;;7082:193;7122:8;7148:2;:13;;;;;;;;;;;;7179:2;:33;;;;;;;;;;;;7230:2;:31;;;;;;;;;;;;7082:7;:22;;:193;;;;;;;:::i;:::-;7081:194;7039:236;7022:320;;;7307:24;;;;;;;;;;;;;;7022:320;7352:43;7365:5;7372:7;:22;;;7352:2;:12;;:43;;;;;:::i;:::-;7429:1;7410:7;:15;;;:20;7406:121;;7468:7;:15;;;7446:37;;7515:1;7497:7;:15;;:19;;;;;7406:121;7552:1;7536:7;:13;;:17;;;;;;;;;;;7589:1;7563:7;:23;;:27;;;;;;;;;;;7617:5;7600:7;:14;;:22;;;;;;;;;;;7661:25;:7;:23;:25::i;:::-;7633:1;:10;;:25;7644:13;7633:25;;;;;;;;;;;:53;;;;7724:1;7701:19;:24;7697:111;;7741:56;7765:10;7777:19;7741:23;:56::i;:::-;7697:111;7841:12;7823:53;;;7855:11;7868:7;7823:53;;;;;;;:::i;:::-;;;;;;;;6454:1429;;;;;;6342:1541;;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;2531:405:2:-;2619:7;2722;:22;;;2766:7;:23;;;2811:7;:13;;;2846:7;:15;;;2883:7;:14;;;2684:231;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2657:272;;;;;;2638:291;;2531:405;;;:::o;1329:176::-;1438:7;:14;;;1433:65;;1461:37;;;;;;;;;;;;;;1433:65;1329:176;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;342:204:5:-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;2189:336:2:-;2362:60;2376:7;2385:12;2399:22;2362:13;:60::i;:::-;2448:12;2432:7;:13;;:28;;;;;;;;;;;2496:22;2470:7;:23;;:48;;;;;;;;;;;2189:336;;;:::o;1332:399:5:-;1455:21;1473:2;1455:17;:21::i;:::-;1491:22;1486:239;;1553:19;1529:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1486:239;;;1641:16;1593:64;;1618:19;1594:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1593:64;;;1589:136;;;1680:34;;;;;;;;;;;;;;1589:136;1486:239;1332:399;;;:::o;687:636:2:-;932:17;991:1;965:7;:22;;;:27;;;961:356;;1030:37;:28;:35;;;:37::i;:::-;1012:7;:15;;;:55;1008:72;;;1076:4;1069:11;;;;1008:72;1094:27;1215:7;:22;;;1124:113;;1185:10;1174:8;:21;;;;:::i;:::-;1124:30;:72;;;;:::i;:::-;:113;;;;:::i;:::-;1094:143;;1277:29;:20;:27;;;:29::i;:::-;1259:7;:15;;;:47;1252:54;;;;;961:356;687:636;;;;;;;;:::o;505:205:3:-;562:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:36;;;599:10;619:4;626:6;562:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;557:147;;656:37;;;;;;;;;;;;;;557:147;505:205;:::o;1511:672:2:-;1710:7;1729:21;1780:5;1787:11;1763:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1753:47;;;;;;1729:71;;1810:25;1838:24;1854:7;1838:15;:24::i;:::-;1810:52;;1873:19;1895:1;:10;;:25;1906:13;1895:25;;;;;;;;;;;;1873:47;;1957:1;1949:10;;1934:11;:25;1930:216;;1982:38;;;;;;;;;;;;;;1930:216;2056:17;2041:11;:32;2037:109;;2096:39;;;;;;;;;;;;;;2037:109;2163:13;2156:20;;;;;1511:672;;;;;;:::o;1257:1059:4:-;1447:19;1468:15;1500:9;1495:815;1515:11;:18;1511:1;:22;1495:815;;;1551:17;1571:11;1583:1;1571:14;;;;;;;;:::i;:::-;;;;;;;;1551:34;;1599:41;1643:1;:11;;:23;1655:10;1643:23;;;;;;;;;;;;;;;1599:67;;1711:1;1684:8;:17;;:23;;;;;;;;;;;;:28;;;1680:507;;1732:26;1749:8;1732:16;:26::i;:::-;1781:22;1776:355;;1854:19;1827:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1776:355;;;1974:25;:23;:25::i;:::-;:52;;;;;;;;;;;;1923:103;;1951:19;1924:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1923:103;;;1898:233;;;2074:38;;;;;;;;;;;;;;1898:233;1776:355;2160:8;:12;;;;;;;;;;;;2148:24;;;;;:::i;:::-;;;1680:507;2217:8;:17;;:23;;;;;;;;;;;;2201:39;;;;;:::i;:::-;;;2282:3;;;;;1537:773;;1495:815;;;;1257:1059;;;;;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;220:461:2:-;385:17;464:7;:22;;;405:81;;437:7;:23;;;412:22;:48;;;;:::i;:::-;405:81;;;;:::i;:::-;385:101;;496:12;565:10;540:7;:22;;;511:51;;523:7;:13;;;512:8;:24;;;;:::i;:::-;511:51;;;;:::i;:::-;:64;;;;:::i;:::-;496:79;;620:7;:15;;;603:14;:5;:12;;;:14::i;:::-;:32;:71;;660:14;:5;:12;;;:14::i;:::-;642:7;:15;;;:32;;;;:::i;:::-;603:71;;;638:1;603:71;585:7;:15;;:89;;;;;375:306;;220:461;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;627:363:4:-;715:19;788:8;:12;;;;;;;;;;;;761:8;:17;;:23;;;;;;;;;;;;745:12;738:46;;;;:::i;:::-;737:63;;;;;;:::i;:::-;715:85;;838:12;811:8;:17;;:23;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;904:8;:23;;;;;;;;;;;;889:38;;:12;:38;;;;:::i;:::-;860:8;:17;;:25;;;:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;970:12;937:8;:17;;:23;;;:46;;;;;;;;;;;;;;;;;;705:285;627:363;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:75:13:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:102::-;1315:6;1366:2;1362:7;1357:2;1350:5;1346:14;1342:28;1332:38;;1274:102;;;:::o;1382:180::-;1430:77;1427:1;1420:88;1527:4;1524:1;1517:15;1551:4;1548:1;1541:15;1568:281;1651:27;1673:4;1651:27;:::i;:::-;1643:6;1639:40;1781:6;1769:10;1766:22;1745:18;1733:10;1730:34;1727:62;1724:88;;;1792:18;;:::i;:::-;1724:88;1832:10;1828:2;1821:22;1611:238;1568:281;;:::o;1855:129::-;1889:6;1916:20;;:::i;:::-;1906:30;;1945:33;1973:4;1965:6;1945:33;:::i;:::-;1855:129;;;:::o;1990:310::-;2066:4;2156:18;2148:6;2145:30;2142:56;;;2178:18;;:::i;:::-;2142:56;2228:4;2220:6;2216:17;2208:25;;2288:4;2282;2278:15;2270:23;;1990:310;;;:::o;2306:101::-;2342:7;2382:18;2375:5;2371:30;2360:41;;2306:101;;;:::o;2413:120::-;2485:23;2502:5;2485:23;:::i;:::-;2478:5;2475:34;2465:62;;2523:1;2520;2513:12;2465:62;2413:120;:::o;2539:137::-;2584:5;2622:6;2609:20;2600:29;;2638:32;2664:5;2638:32;:::i;:::-;2539:137;;;;:::o;2698:707::-;2793:5;2818:80;2834:63;2890:6;2834:63;:::i;:::-;2818:80;:::i;:::-;2809:89;;2918:5;2947:6;2940:5;2933:21;2981:4;2974:5;2970:16;2963:23;;3034:4;3026:6;3022:17;3014:6;3010:30;3063:3;3055:6;3052:15;3049:122;;;3082:79;;:::i;:::-;3049:122;3197:6;3180:219;3214:6;3209:3;3206:15;3180:219;;;3289:3;3318:36;3350:3;3338:10;3318:36;:::i;:::-;3313:3;3306:49;3384:4;3379:3;3375:14;3368:21;;3256:143;3240:4;3235:3;3231:14;3224:21;;3180:219;;;3184:21;2799:606;;2698:707;;;;;:::o;3427:368::-;3497:5;3546:3;3539:4;3531:6;3527:17;3523:27;3513:122;;3554:79;;:::i;:::-;3513:122;3671:6;3658:20;3696:93;3785:3;3777:6;3770:4;3762:6;3758:17;3696:93;:::i;:::-;3687:102;;3503:292;3427:368;;;;:::o;3801:77::-;3838:7;3867:5;3856:16;;3801:77;;;:::o;3884:122::-;3957:24;3975:5;3957:24;:::i;:::-;3950:5;3947:35;3937:63;;3996:1;3993;3986:12;3937:63;3884:122;:::o;4012:139::-;4058:5;4096:6;4083:20;4074:29;;4112:33;4139:5;4112:33;:::i;:::-;4012:139;;;;:::o;4157:117::-;4266:1;4263;4256:12;4403:93;4439:7;4479:10;4472:5;4468:22;4457:33;;4403:93;;;:::o;4502:120::-;4574:23;4591:5;4574:23;:::i;:::-;4567:5;4564:34;4554:62;;4612:1;4609;4602:12;4554:62;4502:120;:::o;4628:137::-;4673:5;4711:6;4698:20;4689:29;;4727:32;4753:5;4727:32;:::i;:::-;4628:137;;;;:::o;4771:90::-;4805:7;4848:5;4841:13;4834:21;4823:32;;4771:90;;;:::o;4867:116::-;4937:21;4952:5;4937:21;:::i;:::-;4930:5;4927:32;4917:60;;4973:1;4970;4963:12;4917:60;4867:116;:::o;4989:133::-;5032:5;5070:6;5057:20;5048:29;;5086:30;5110:5;5086:30;:::i;:::-;4989:133;;;;:::o;5166:1079::-;5240:5;5284:4;5272:9;5267:3;5263:19;5259:30;5256:117;;;5292:79;;:::i;:::-;5256:117;5391:21;5407:4;5391:21;:::i;:::-;5382:30;;5481:1;5521:48;5565:3;5556:6;5545:9;5541:22;5521:48;:::i;:::-;5514:4;5507:5;5503:16;5496:74;5422:159;5651:2;5692:48;5736:3;5727:6;5716:9;5712:22;5692:48;:::i;:::-;5685:4;5678:5;5674:16;5667:74;5591:161;5812:2;5853:48;5897:3;5888:6;5877:9;5873:22;5853:48;:::i;:::-;5846:4;5839:5;5835:16;5828:74;5762:151;5974:2;6015:46;6057:3;6048:6;6037:9;6033:22;6015:46;:::i;:::-;6008:4;6001:5;5997:16;5990:72;5923:150;6135:3;6177:49;6222:3;6213:6;6202:9;6198:22;6177:49;:::i;:::-;6170:4;6163:5;6159:16;6152:75;6083:155;5166:1079;;;;:::o;6251:1565::-;6417:6;6425;6433;6441;6449;6457;6465;6514:3;6502:9;6493:7;6489:23;6485:33;6482:120;;;6521:79;;:::i;:::-;6482:120;6669:1;6658:9;6654:17;6641:31;6699:18;6691:6;6688:30;6685:117;;;6721:79;;:::i;:::-;6685:117;6834:64;6890:7;6881:6;6870:9;6866:22;6834:64;:::i;:::-;6816:82;;;;6612:296;6975:2;6964:9;6960:18;6947:32;7006:18;6998:6;6995:30;6992:117;;;7028:79;;:::i;:::-;6992:117;7133:77;7202:7;7193:6;7182:9;7178:22;7133:77;:::i;:::-;7123:87;;6918:302;7287:2;7276:9;7272:18;7259:32;7318:18;7310:6;7307:30;7304:117;;;7340:79;;:::i;:::-;7304:117;7453:64;7509:7;7500:6;7489:9;7485:22;7453:64;:::i;:::-;7435:82;;;;7230:297;7566:2;7592:53;7637:7;7628:6;7617:9;7613:22;7592:53;:::i;:::-;7582:63;;7537:118;7694:3;7721:78;7791:7;7782:6;7771:9;7767:22;7721:78;:::i;:::-;7711:88;;7665:144;6251:1565;;;;;;;;;;:::o;7838:567::-;7910:8;7920:6;7970:3;7963:4;7955:6;7951:17;7947:27;7937:122;;7978:79;;:::i;:::-;7937:122;8091:6;8078:20;8068:30;;8121:18;8113:6;8110:30;8107:117;;;8143:79;;:::i;:::-;8107:117;8257:4;8249:6;8245:17;8233:29;;8311:3;8303:4;8295:6;8291:17;8281:8;8277:32;8274:41;8271:128;;;8318:79;;:::i;:::-;8271:128;7838:567;;;;;:::o;8411:1096::-;8550:6;8558;8566;8574;8582;8631:3;8619:9;8610:7;8606:23;8602:33;8599:120;;;8638:79;;:::i;:::-;8599:120;8786:1;8775:9;8771:17;8758:31;8816:18;8808:6;8805:30;8802:117;;;8838:79;;:::i;:::-;8802:117;8951:64;9007:7;8998:6;8987:9;8983:22;8951:64;:::i;:::-;8933:82;;;;8729:296;9092:2;9081:9;9077:18;9064:32;9123:18;9115:6;9112:30;9109:117;;;9145:79;;:::i;:::-;9109:117;9258:79;9329:7;9320:6;9309:9;9305:22;9258:79;:::i;:::-;9240:97;;;;9035:312;9386:2;9412:78;9482:7;9473:6;9462:9;9458:22;9412:78;:::i;:::-;9402:88;;9357:143;8411:1096;;;;;;;;:::o;9513:898::-;9641:6;9649;9657;9665;9714:3;9702:9;9693:7;9689:23;9685:33;9682:120;;;9721:79;;:::i;:::-;9682:120;9869:1;9858:9;9854:17;9841:31;9899:18;9891:6;9888:30;9885:117;;;9921:79;;:::i;:::-;9885:117;10034:79;10105:7;10096:6;10085:9;10081:22;10034:79;:::i;:::-;10016:97;;;;9812:311;10162:2;10188:53;10233:7;10224:6;10213:9;10209:22;10188:53;:::i;:::-;10178:63;;10133:118;10290:2;10316:78;10386:7;10377:6;10366:9;10362:22;10316:78;:::i;:::-;10306:88;;10261:143;9513:898;;;;;;;:::o;10417:126::-;10454:7;10494:42;10487:5;10483:54;10472:65;;10417:126;;;:::o;10549:96::-;10586:7;10615:24;10633:5;10615:24;:::i;:::-;10604:35;;10549:96;;;:::o;10651:122::-;10724:24;10742:5;10724:24;:::i;:::-;10717:5;10714:35;10704:63;;10763:1;10760;10753:12;10704:63;10651:122;:::o;10779:139::-;10825:5;10863:6;10850:20;10841:29;;10879:33;10906:5;10879:33;:::i;:::-;10779:139;;;;:::o;10924:1043::-;11061:6;11069;11077;11085;11093;11142:3;11130:9;11121:7;11117:23;11113:33;11110:120;;;11149:79;;:::i;:::-;11110:120;11269:1;11294:53;11339:7;11330:6;11319:9;11315:22;11294:53;:::i;:::-;11284:63;;11240:117;11424:2;11413:9;11409:18;11396:32;11455:18;11447:6;11444:30;11441:117;;;11477:79;;:::i;:::-;11441:117;11590:79;11661:7;11652:6;11641:9;11637:22;11590:79;:::i;:::-;11572:97;;;;11367:312;11718:2;11744:53;11789:7;11780:6;11769:9;11765:22;11744:53;:::i;:::-;11734:63;;11689:118;11846:2;11872:78;11942:7;11933:6;11922:9;11918:22;11872:78;:::i;:::-;11862:88;;11817:143;10924:1043;;;;;;;;:::o;11973:878::-;12099:6;12107;12115;12164:3;12152:9;12143:7;12139:23;12135:33;12132:120;;;12171:79;;:::i;:::-;12132:120;12291:1;12316:53;12361:7;12352:6;12341:9;12337:22;12316:53;:::i;:::-;12306:63;;12262:117;12446:2;12435:9;12431:18;12418:32;12477:18;12469:6;12466:30;12463:117;;;12499:79;;:::i;:::-;12463:117;12604:77;12673:7;12664:6;12653:9;12649:22;12604:77;:::i;:::-;12594:87;;12389:302;12730:2;12756:78;12826:7;12817:6;12806:9;12802:22;12756:78;:::i;:::-;12746:88;;12701:143;11973:878;;;;;:::o;12857:180::-;12905:77;12902:1;12895:88;13002:4;12999:1;12992:15;13026:4;13023:1;13016:15;13043:176;13075:1;13092:20;13110:1;13092:20;:::i;:::-;13087:25;;13126:20;13144:1;13126:20;:::i;:::-;13121:25;;13165:1;13155:35;;13170:18;;:::i;:::-;13155:35;13211:1;13208;13204:9;13199:14;;13043:176;;;;:::o;13225:147::-;13326:11;13363:3;13348:18;;13225:147;;;;:::o;13378:146::-;13475:6;13470:3;13465;13452:30;13516:1;13507:6;13502:3;13498:16;13491:27;13378:146;;;:::o;13552:327::-;13666:3;13687:88;13768:6;13763:3;13687:88;:::i;:::-;13680:95;;13785:56;13834:6;13829:3;13822:5;13785:56;:::i;:::-;13866:6;13861:3;13857:16;13850:23;;13552:327;;;;;:::o;13885:94::-;13918:8;13966:5;13962:2;13958:14;13937:35;;13885:94;;;:::o;13985:::-;14024:7;14053:20;14067:5;14053:20;:::i;:::-;14042:31;;13985:94;;;:::o;14085:100::-;14124:7;14153:26;14173:5;14153:26;:::i;:::-;14142:37;;14085:100;;;:::o;14191:157::-;14296:45;14316:24;14334:5;14316:24;:::i;:::-;14296:45;:::i;:::-;14291:3;14284:58;14191:157;;:::o;14354:432::-;14522:3;14544:103;14643:3;14634:6;14626;14544:103;:::i;:::-;14537:110;;14657:75;14728:3;14719:6;14657:75;:::i;:::-;14757:2;14752:3;14748:12;14741:19;;14777:3;14770:10;;14354:432;;;;;;:::o;14792:113::-;14858:6;14892:5;14886:12;14876:22;;14792:113;;;:::o;14911:162::-;15027:11;15064:3;15049:18;;14911:162;;;;:::o;15079:131::-;15145:4;15168:3;15160:11;;15198:4;15193:3;15189:14;15181:22;;15079:131;;;:::o;15216:113::-;15299:23;15316:5;15299:23;:::i;:::-;15294:3;15287:36;15216:113;;:::o;15335:191::-;15410:10;15431:52;15479:3;15471:6;15431:52;:::i;:::-;15515:4;15510:3;15506:14;15492:28;;15335:191;;;;:::o;15532:112::-;15601:4;15633;15628:3;15624:14;15616:22;;15532:112;;;:::o;15678:768::-;15813:3;15842:53;15889:5;15842:53;:::i;:::-;15911:103;16007:6;16002:3;15911:103;:::i;:::-;15904:110;;16038:55;16087:5;16038:55;:::i;:::-;16116:7;16147:1;16132:289;16157:6;16154:1;16151:13;16132:289;;;16233:6;16227:13;16260:69;16325:3;16310:13;16260:69;:::i;:::-;16253:76;;16352:59;16404:6;16352:59;:::i;:::-;16342:69;;16192:229;16179:1;16176;16172:9;16167:14;;16132:289;;;16136:14;16437:3;16430:10;;15818:628;;;15678:768;;;;:::o;16452:331::-;16612:3;16634:123;16753:3;16744:6;16634:123;:::i;:::-;16627:130;;16774:3;16767:10;;16452:331;;;;:::o;16789:472::-;16977:3;16992:75;17063:3;17054:6;16992:75;:::i;:::-;17092:2;17087:3;17083:12;17076:19;;17112:123;17231:3;17222:6;17112:123;:::i;:::-;17105:130;;17252:3;17245:10;;16789:472;;;;;:::o;17267:180::-;17315:77;17312:1;17305:88;17412:4;17409:1;17402:15;17436:4;17433:1;17426:15;17453:191;17493:3;17512:20;17530:1;17512:20;:::i;:::-;17507:25;;17546:20;17564:1;17546:20;:::i;:::-;17541:25;;17589:1;17586;17582:9;17575:16;;17610:3;17607:1;17604:10;17601:36;;;17617:18;;:::i;:::-;17601:36;17453:191;;;;:::o;17650:180::-;17698:77;17695:1;17688:88;17795:4;17792:1;17785:15;17819:4;17816:1;17809:15;17836:175;17874:3;17897:23;17914:5;17897:23;:::i;:::-;17888:32;;17942:10;17935:5;17932:21;17929:47;;17956:18;;:::i;:::-;17929:47;18003:1;17996:5;17992:13;17985:20;;17836:175;;;:::o;18017:205::-;18056:3;18075:19;18092:1;18075:19;:::i;:::-;18070:24;;18108:19;18125:1;18108:19;:::i;:::-;18103:24;;18150:1;18147;18143:9;18136:16;;18173:18;18168:3;18165:27;18162:53;;;18195:18;;:::i;:::-;18162:53;18017:205;;;;:::o;18228:183::-;18326:11;18360:6;18355:3;18348:19;18400:4;18395:3;18391:14;18376:29;;18228:183;;;;:::o;18417:105::-;18492:23;18509:5;18492:23;:::i;:::-;18487:3;18480:36;18417:105;;:::o;18528:175::-;18595:10;18616:44;18656:3;18648:6;18616:44;:::i;:::-;18692:4;18687:3;18683:14;18669:28;;18528:175;;;;:::o;18737:724::-;18854:3;18883:53;18930:5;18883:53;:::i;:::-;18952:85;19030:6;19025:3;18952:85;:::i;:::-;18945:92;;19061:55;19110:5;19061:55;:::i;:::-;19139:7;19170:1;19155:281;19180:6;19177:1;19174:13;19155:281;;;19256:6;19250:13;19283:61;19340:3;19325:13;19283:61;:::i;:::-;19276:68;;19367:59;19419:6;19367:59;:::i;:::-;19357:69;;19215:221;19202:1;19199;19195:9;19190:14;;19155:281;;;19159:14;19452:3;19445:10;;18859:602;;;18737:724;;;;:::o;19467:168::-;19550:11;19584:6;19579:3;19572:19;19624:4;19619:3;19615:14;19600:29;;19467:168;;;;:::o;19663:314::-;19759:3;19780:70;19843:6;19838:3;19780:70;:::i;:::-;19773:77;;19860:56;19909:6;19904:3;19897:5;19860:56;:::i;:::-;19941:29;19963:6;19941:29;:::i;:::-;19936:3;19932:39;19925:46;;19663:314;;;;;:::o;19983:105::-;20058:23;20075:5;20058:23;:::i;:::-;20053:3;20046:36;19983:105;;:::o;20094:99::-;20165:21;20180:5;20165:21;:::i;:::-;20160:3;20153:34;20094:99;;:::o;20199:108::-;20276:24;20294:5;20276:24;:::i;:::-;20271:3;20264:37;20199:108;;:::o;20385:1044::-;20532:4;20527:3;20523:14;20629:4;20622:5;20618:16;20612:23;20648:61;20703:4;20698:3;20694:14;20680:12;20648:61;:::i;:::-;20547:172;20812:4;20805:5;20801:16;20795:23;20831:61;20886:4;20881:3;20877:14;20863:12;20831:61;:::i;:::-;20729:173;20985:4;20978:5;20974:16;20968:23;21004:61;21059:4;21054:3;21050:14;21036:12;21004:61;:::i;:::-;20912:163;21159:4;21152:5;21148:16;21142:23;21178:57;21229:4;21224:3;21220:14;21206:12;21178:57;:::i;:::-;21085:160;21330:4;21323:5;21319:16;21313:23;21349:63;21406:4;21401:3;21397:14;21383:12;21349:63;:::i;:::-;21255:167;20501:928;20385:1044;;:::o;21435:1014::-;21766:4;21804:3;21793:9;21789:19;21781:27;;21854:9;21848:4;21844:20;21840:1;21829:9;21825:17;21818:47;21882:106;21983:4;21974:6;21882:106;:::i;:::-;21874:114;;22035:9;22029:4;22025:20;22020:2;22009:9;22005:18;21998:48;22063:86;22144:4;22135:6;22127;22063:86;:::i;:::-;22055:94;;22196:9;22190:4;22186:20;22181:2;22170:9;22166:18;22159:48;22224:86;22305:4;22296:6;22288;22224:86;:::i;:::-;22216:94;;22320:122;22438:2;22427:9;22423:18;22414:6;22320:122;:::i;:::-;21435:1014;;;;;;;;;:::o;22455:101::-;22523:4;22546:3;22538:11;;22455:101;;;:::o;22562:120::-;22613:5;22638:38;22672:2;22667:3;22663:12;22658:3;22638:38;:::i;:::-;22629:47;;22562:120;;;;:::o;22688:114::-;22759:4;22791;22786:3;22782:14;22774:22;;22688:114;;;:::o;22836:735::-;22981:3;23004:103;23100:6;23095:3;23004:103;:::i;:::-;22997:110;;23131:57;23182:5;23131:57;:::i;:::-;23211:7;23242:1;23227:319;23252:6;23249:1;23246:13;23227:319;;;23322:41;23356:6;23347:7;23322:41;:::i;:::-;23383:69;23448:3;23433:13;23383:69;:::i;:::-;23376:76;;23475:61;23529:6;23475:61;:::i;:::-;23465:71;;23287:259;23274:1;23271;23267:9;23262:14;;23227:319;;;23231:14;23562:3;23555:10;;22986:585;;22836:735;;;;;:::o;23577:351::-;23747:3;23769:133;23898:3;23889:6;23881;23769:133;:::i;:::-;23762:140;;23919:3;23912:10;;23577:351;;;;;:::o;23934:169::-;23972:3;23995:23;24012:5;23995:23;:::i;:::-;23986:32;;24040:4;24033:5;24030:15;24027:41;;24048:18;;:::i;:::-;24027:41;24095:1;24088:5;24084:13;24077:20;;23934:169;;;:::o;24137:691::-;24264:3;24287:85;24365:6;24360:3;24287:85;:::i;:::-;24280:92;;24396:57;24447:5;24396:57;:::i;:::-;24476:7;24507:1;24492:311;24517:6;24514:1;24511:13;24492:311;;;24587:41;24621:6;24612:7;24587:41;:::i;:::-;24648:61;24705:3;24690:13;24648:61;:::i;:::-;24641:68;;24732:61;24786:6;24732:61;:::i;:::-;24722:71;;24552:251;24539:1;24536;24532:9;24527:14;;24492:311;;;24496:14;24819:3;24812:10;;24269:559;;24137:691;;;;;:::o;24834:817::-;25119:4;25157:3;25146:9;25142:19;25134:27;;25207:9;25201:4;25197:20;25193:1;25182:9;25178:17;25171:47;25235:116;25346:4;25337:6;25329;25235:116;:::i;:::-;25227:124;;25398:9;25392:4;25388:20;25383:2;25372:9;25368:18;25361:48;25426:86;25507:4;25498:6;25490;25426:86;:::i;:::-;25418:94;;25522:122;25640:2;25629:9;25625:18;25616:6;25522:122;:::i;:::-;24834:817;;;;;;;;:::o;25657:600::-;25886:4;25924:3;25913:9;25909:19;25901:27;;25974:9;25968:4;25964:20;25960:1;25949:9;25945:17;25938:47;26002:116;26113:4;26104:6;26096;26002:116;:::i;:::-;25994:124;;26128:122;26246:2;26235:9;26231:18;26222:6;26128:122;:::i;:::-;25657:600;;;;;;:::o;26263:327::-;26321:6;26370:2;26358:9;26349:7;26345:23;26341:32;26338:119;;;26376:79;;:::i;:::-;26338:119;26496:1;26521:52;26565:7;26556:6;26545:9;26541:22;26521:52;:::i;:::-;26511:62;;26467:116;26263:327;;;;:::o;26596:208::-;26635:4;26655:19;26672:1;26655:19;:::i;:::-;26650:24;;26688:19;26705:1;26688:19;:::i;:::-;26683:24;;26731:1;26728;26724:9;26716:17;;26755:18;26749:4;26746:28;26743:54;;;26777:18;;:::i;:::-;26743:54;26596:208;;;;:::o;26810:275::-;26849:7;26872:19;26889:1;26872:19;:::i;:::-;26867:24;;26905:19;26922:1;26905:19;:::i;:::-;26900:24;;26959:1;26956;26952:9;26981:29;26998:11;26981:29;:::i;:::-;26970:40;;27042:11;27033:7;27030:24;27020:58;;27058:18;;:::i;:::-;27020:58;26857:228;26810:275;;;;:::o;27091:194::-;27131:4;27151:20;27169:1;27151:20;:::i;:::-;27146:25;;27185:20;27203:1;27185:20;:::i;:::-;27180:25;;27229:1;27226;27222:9;27214:17;;27253:1;27247:4;27244:11;27241:37;;;27258:18;;:::i;:::-;27241:37;27091:194;;;;:::o;27291:118::-;27378:24;27396:5;27378:24;:::i;:::-;27373:3;27366:37;27291:118;;:::o;27415:710::-;27672:4;27710:3;27699:9;27695:19;27687:27;;27760:9;27754:4;27750:20;27746:1;27735:9;27731:17;27724:47;27788:116;27899:4;27890:6;27882;27788:116;:::i;:::-;27780:124;;27914:72;27982:2;27971:9;27967:18;27958:6;27914:72;:::i;:::-;27996:122;28114:2;28103:9;28099:18;28090:6;27996:122;:::i;:::-;27415:710;;;;;;;:::o;28131:580::-;28350:4;28388:3;28377:9;28373:19;28365:27;;28438:9;28432:4;28428:20;28424:1;28413:9;28409:17;28402:47;28466:106;28567:4;28558:6;28466:106;:::i;:::-;28458:114;;28582:122;28700:2;28689:9;28685:18;28676:6;28582:122;:::i;:::-;28131:580;;;;;:::o;28717:96::-;28751:8;28800:5;28795:3;28791:15;28770:36;;28717:96;;;:::o;28819:94::-;28857:7;28886:21;28901:5;28886:21;:::i;:::-;28875:32;;28819:94;;;:::o;28919:153::-;29022:43;29041:23;29058:5;29041:23;:::i;:::-;29022:43;:::i;:::-;29017:3;29010:56;28919:153;;:::o;29078:96::-;29112:8;29161:5;29156:3;29152:15;29131:36;;29078:96;;;:::o;29180:94::-;29218:7;29247:21;29262:5;29247:21;:::i;:::-;29236:32;;29180:94;;;:::o;29280:153::-;29383:43;29402:23;29419:5;29402:23;:::i;:::-;29383:43;:::i;:::-;29378:3;29371:56;29280:153;;:::o;29439:79::-;29478:7;29507:5;29496:16;;29439:79;;;:::o;29524:157::-;29629:45;29649:24;29667:5;29649:24;:::i;:::-;29629:45;:::i;:::-;29624:3;29617:58;29524:157;;:::o;29687:96::-;29721:8;29770:5;29765:3;29761:15;29740:36;;29687:96;;;:::o;29789:93::-;29826:7;29855:21;29870:5;29855:21;:::i;:::-;29844:32;;29789:93;;;:::o;29888:95::-;29924:7;29953:24;29971:5;29953:24;:::i;:::-;29942:35;;29888:95;;;:::o;29989:145::-;30088:39;30105:21;30120:5;30105:21;:::i;:::-;30088:39;:::i;:::-;30083:3;30076:52;29989:145;;:::o;30140:792::-;30352:3;30367:73;30436:3;30427:6;30367:73;:::i;:::-;30465:1;30460:3;30456:11;30449:18;;30477:73;30546:3;30537:6;30477:73;:::i;:::-;30575:1;30570:3;30566:11;30559:18;;30587:73;30656:3;30647:6;30587:73;:::i;:::-;30685:1;30680:3;30676:11;30669:18;;30697:75;30768:3;30759:6;30697:75;:::i;:::-;30797:2;30792:3;30788:12;30781:19;;30810:69;30875:3;30866:6;30810:69;:::i;:::-;30904:1;30899:3;30895:11;30888:18;;30923:3;30916:10;;30140:792;;;;;;;;:::o;30938:200::-;30977:4;30997:19;31014:1;30997:19;:::i;:::-;30992:24;;31030:19;31047:1;31030:19;:::i;:::-;31025:24;;31073:1;31070;31066:9;31058:17;;31097:10;31091:4;31088:20;31085:46;;;31111:18;;:::i;:::-;31085:46;30938:200;;;;:::o;31144:197::-;31183:3;31202:19;31219:1;31202:19;:::i;:::-;31197:24;;31235:19;31252:1;31235:19;:::i;:::-;31230:24;;31277:1;31274;31270:9;31263:16;;31300:10;31295:3;31292:19;31289:45;;;31314:18;;:::i;:::-;31289:45;31144:197;;;;:::o;31347:118::-;31434:24;31452:5;31434:24;:::i;:::-;31429:3;31422:37;31347:118;;:::o;31471:442::-;31620:4;31658:2;31647:9;31643:18;31635:26;;31671:71;31739:1;31728:9;31724:17;31715:6;31671:71;:::i;:::-;31752:72;31820:2;31809:9;31805:18;31796:6;31752:72;:::i;:::-;31834;31902:2;31891:9;31887:18;31878:6;31834:72;:::i;:::-;31471:442;;;;;;:::o;31919:137::-;31973:5;32004:6;31998:13;31989:22;;32020:30;32044:5;32020:30;:::i;:::-;31919:137;;;;:::o;32062:345::-;32129:6;32178:2;32166:9;32157:7;32153:23;32149:32;32146:119;;;32184:79;;:::i;:::-;32146:119;32304:1;32329:61;32382:7;32373:6;32362:9;32358:22;32329:61;:::i;:::-;32319:71;;32275:125;32062:345;;;;:::o;32413:332::-;32534:4;32572:2;32561:9;32557:18;32549:26;;32585:71;32653:1;32642:9;32638:17;32629:6;32585:71;:::i;:::-;32666:72;32734:2;32723:9;32719:18;32710:6;32666:72;:::i;:::-;32413:332;;;;;:::o;32751:410::-;32791:7;32814:20;32832:1;32814:20;:::i;:::-;32809:25;;32848:20;32866:1;32848:20;:::i;:::-;32843:25;;32903:1;32900;32896:9;32925:30;32943:11;32925:30;:::i;:::-;32914:41;;33104:1;33095:7;33091:15;33088:1;33085:22;33065:1;33058:9;33038:83;33015:139;;33134:18;;:::i;:::-;33015:139;32799:362;32751:410;;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50613516806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806306e8fb9c1461006757806312b3fc19146100835780635fec6dd01461009f578063686e682c146100bb578063bc26e7e5146100d7578063bf0f2fb2146100f3575b600080fd5b610081600480360381019061007c91906126f3565b61010f565b005b61009d60048036038101906100989190612822565b610bda565b005b6100b960048036038101906100b491906128b7565b610e9b565b005b6100d560048036038101906100d091906128b7565b61115a565b005b6100f160048036038101906100ec9190612989565b6114c1565b005b61010d60048036038101906101089190612a12565b6115ca565b005b600061011961182a565b90506000610125611866565b9050600087519050600467ffffffffffffffff168110806101505750600d67ffffffffffffffff1681115b8061017257506001600367ffffffffffffffff168261016f9190612ab0565b14155b156101a9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a9050146101f0576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a3360405160200161020793929190612b68565b6040516020818303038152906040528051906020012090506000801b8460000160008381526020019081526020016000205414610270576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016102839190612c4a565b6040516020818303038152906040528051906020012060001c1760001b8460000160008381526020019081526020016000208190555050600033896040516020016102cf929190612c61565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036103a7576000866000015163ffffffff1614158061033457506000866020015167ffffffffffffffff1614155b8061034e57506000866040015167ffffffffffffffff1614155b8061035e57506000866080015114155b8061036b57508560600151155b156103a2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f2565b6103b0866118a2565b81146103e8576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f1866118ee565b5b5085856080018181516104059190612cb8565b915081815250506000856060015115610a87576000805b84811015610a515760008c828151811061043957610438612cec565b5b60200260200101519050856001836104519190612cb8565b101561053f578c6001836104659190612cb8565b8151811061047657610475612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff1611156104cb576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c6001836104d99190612cb8565b815181106104ea576104e9612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361053e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610726576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156108205760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156107e757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561081e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6108298161192c565b87600001600c9054906101000a900463ffffffff1663ffffffff1681600001805161085390612d1b565b63ffffffff16908163ffffffff1681525063ffffffff1611156108a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806080015160200151846108b69190612d47565b93508060200151856108c89190612d47565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061041c565b50610a6f81610a5f876119f4565b89611a699092919063ffffffff16565b610a8560018087611ab99092919063ffffffff16565b505b856000018051610a9690612d1b565b63ffffffff16908163ffffffff1681525050610b09818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b15610b40576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b49866118a2565b8560010160008481526020019081526020016000208190555060008714610b7457610b7387611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610bc496959493929190612eec565b60405180910390a2505050505050505050505050565b6000610be461182a565b90506000868633604051602001610bfd93929190612b68565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610c75576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610c8b929190612fd6565b604051602081830303815290604052805190602001201690508083831614610cdf576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d39338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a611d11909392919063ffffffff16565b9050866060015115610ddc576000610d968a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a611de9565b5090506000610da3611866565b9050610dc282610db2836119f4565b8b611a699092919063ffffffff16565b610dd96000600183611ab99092919063ffffffff16565b50505b866000018051610deb90612fef565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610e1f876118a2565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610e86959493929190613075565b60405180910390a25050505050505050505050565b6000610ea561182a565b90506000610f0133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050826060015115610f3f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f49611866565b9050600080610fa0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506001886000015188611de9565b915091508686608001818151610fb69190612cb8565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff1681525050610ff7836119f4565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506110306001876000015185611ab99092919063ffffffff16565b611091818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b156110c8576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110d1866118a2565b8560010160008681526020019081526020016000208190555060008711156110fd576110fc87611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a89604051611147939291906130be565b60405180910390a2505050505050505050565b600061116461182a565b905060006111c033878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b90506111cb836118ee565b60006111d5611866565b905060008460600151156113245760008089899050905060005b8181101561130357600061120161182a565b60060160008d8d8581811061121957611218612cec565b5b905060200201602081019061122e91906130f0565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff1643611294919061311d565b61129e9190613159565b8160020160000160049054906101000a900467ffffffffffffffff166112c49190612d47565b846112cf9190612d47565b93508060000160049054906101000a900467ffffffffffffffff16856112f59190612d47565b9450816001019150506111ef565b505061132281611312856119f4565b88611a699092919063ffffffff16565b505b8585608001511015611362576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516113749190613196565b915081815250508460600151801561139757506000856000015163ffffffff1614155b801561140057506113ff818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611b9890949392919063ffffffff16565b5b15611437576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611440856118a2565b846001016000858152602001908152602001600020819055506114633387611fc5565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516114af94939291906131d9565b60405180910390a25050505050505050565b60006114cb61182a565b9050600061152787878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050838360800181815161153b9190612cb8565b9150818152505061154b836118a2565b8260010160008381526020019081526020016000208190555061156d84611c2d565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2878787876040516115b994939291906131d9565b60405180910390a250505050505050565b60006115d461182a565b905060006115ef85858486611d11909392919063ffffffff16565b90506115fa836118ee565b6000611604611866565b905060008061161a876000886000015188611de9565b9150915061163b8261162b856119f4565b886120a89092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156116d757506116d5828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611b9890949392919063ffffffff16565b155b1561170e576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117286000886000015186611ab99092919063ffffffff16565b6000876080015114611747578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506117a3876118a2565b86600101600087815260200190815260200160002081905550600081146117cf576117ce3382611fc5565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611817929190613219565b60405180910390a2505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61185d9190613196565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6118999190613196565b90508091505090565b6000816000015182602001518360400151846080015185606001516040516020016118d195949392919061331e565b604051602081830303815290604052805190602001209050919050565b8060600151611929576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611947919061337d565b63ffffffff166119579190613159565b905080826080015160200181815161196f9190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816119a29190613159565b82608001516040018181516119b79190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611a359190613196565b611a3f9190613159565b8260000160189054906101000a900467ffffffffffffffff16611a629190612d47565b9050919050565b611a748383836120a8565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611ac28361215c565b81611b0d57808360000160048282829054906101000a900463ffffffff16611aea919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611b93565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611b3791906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611b92576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614611c2357611bbe8267ffffffffffffffff166121b5565b86608001511015611bd25760019050611c24565b6000866000015163ffffffff168587611beb9190612d47565b85611bf69190613159565b611c009190613159565b9050611c158167ffffffffffffffff166121b5565b876080015110915050611c24565b5b95945050505050565b611c3561182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611c95939291906133fc565b6020604051808303816000875af1158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613448565b611d0e576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000808484604051602001611d27929190612c61565b6040516020818303038152906040528051906020012090506000611d4a876118a2565b905060008460010160008481526020019081526020016000205490506000801b8103611da2576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114611ddb576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b8651811015611fbb576000878281518110611e0d57611e0c612cec565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff1614611f8557611e72816121d7565b87611ebd57868160000160008282829054906101000a900463ffffffff16611e9a919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611f5e565b611ec5611866565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff16611f0291906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611f5d576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff1684611f829190612d47565b93505b8060020160000160049054906101000a900467ffffffffffffffff1685611fac9190612d47565b94508260010192505050611def565b5094509492505050565b611fcd61182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161202b929190613475565b6020604051808303816000875af115801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190613448565b6120a4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff168460200151836120c5919061311d565b6120cf9190613159565b9050600081856000015163ffffffff168660400151866120ef919061311d565b6120f99190613159565b6121039190612d47565b9050846080015161211d8267ffffffffffffffff166121b5565b11612149576121358167ffffffffffffffff166121b5565b85608001516121449190613196565b61214c565b60005b8560800181815250505050505050565b61216581612316565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff166121d0919061349e565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff1643612215919061337d565b63ffffffff166122259190613159565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166122519190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff168161229d9190613159565b82600201600001600c8282829054906101000a900467ffffffffffffffff166122c69190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612372919061311d565b61237c9190613159565b6123869190613159565b8260010160009054906101000a900467ffffffffffffffff166123a99190612d47565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126123e9576123e86123c4565b5b8235905067ffffffffffffffff811115612406576124056123c9565b5b602083019150836001820283011115612422576124216123ce565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61247282612429565b810181811067ffffffffffffffff821117156124915761249061243a565b5b80604052505050565b60006124a46123b0565b90506124b08282612469565b919050565b600067ffffffffffffffff8211156124d0576124cf61243a565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b6124fe816124e1565b811461250957600080fd5b50565b60008135905061251b816124f5565b92915050565b600061253461252f846124b5565b61249a565b90508083825260208201905060208402830185811115612557576125566123ce565b5b835b81811015612580578061256c888261250c565b845260208401935050602081019050612559565b5050509392505050565b600082601f83011261259f5761259e6123c4565b5b81356125af848260208601612521565b91505092915050565b6000819050919050565b6125cb816125b8565b81146125d657600080fd5b50565b6000813590506125e8816125c2565b92915050565b600080fd5b600063ffffffff82169050919050565b61260c816125f3565b811461261757600080fd5b50565b60008135905061262981612603565b92915050565b60008115159050919050565b6126448161262f565b811461264f57600080fd5b50565b6000813590506126618161263b565b92915050565b600060a0828403121561267d5761267c6125ee565b5b61268760a061249a565b905060006126978482850161261a565b60008301525060206126ab8482850161250c565b60208301525060406126bf8482850161250c565b60408301525060606126d384828501612652565b60608301525060806126e7848285016125d9565b60808301525092915050565b6000806000806000806000610120888a031215612713576127126123ba565b5b600088013567ffffffffffffffff811115612731576127306123bf565b5b61273d8a828b016123d3565b9750975050602088013567ffffffffffffffff8111156127605761275f6123bf565b5b61276c8a828b0161258a565b955050604088013567ffffffffffffffff81111561278d5761278c6123bf565b5b6127998a828b016123d3565b945094505060606127ac8a828b016125d9565b92505060806127bd8a828b01612667565b91505092959891949750929550565b60008083601f8401126127e2576127e16123c4565b5b8235905067ffffffffffffffff8111156127ff576127fe6123c9565b5b60208301915083602082028301111561281b5761281a6123ce565b5b9250929050565b600080600080600060e0868803121561283e5761283d6123ba565b5b600086013567ffffffffffffffff81111561285c5761285b6123bf565b5b612868888289016123d3565b9550955050602086013567ffffffffffffffff81111561288b5761288a6123bf565b5b612897888289016127cc565b935093505060406128aa88828901612667565b9150509295509295909350565b60008060008060e085870312156128d1576128d06123ba565b5b600085013567ffffffffffffffff8111156128ef576128ee6123bf565b5b6128fb878288016127cc565b9450945050602061290e878288016125d9565b925050604061291f87828801612667565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129568261292b565b9050919050565b6129668161294b565b811461297157600080fd5b50565b6000813590506129838161295d565b92915050565b600080600080600061010086880312156129a6576129a56123ba565b5b60006129b488828901612974565b955050602086013567ffffffffffffffff8111156129d5576129d46123bf565b5b6129e1888289016127cc565b945094505060406129f4888289016125d9565b9250506060612a0588828901612667565b9150509295509295909350565b600080600060e08486031215612a2b57612a2a6123ba565b5b6000612a3986828701612974565b935050602084013567ffffffffffffffff811115612a5a57612a596123bf565b5b612a668682870161258a565b9250506040612a7786828701612667565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612abb826125b8565b9150612ac6836125b8565b925082612ad657612ad5612a81565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b6000612b078385612ae1565b9350612b14838584612aec565b82840190509392505050565b60008160601b9050919050565b6000612b3882612b20565b9050919050565b6000612b4a82612b2d565b9050919050565b612b62612b5d8261294b565b612b3f565b82525050565b6000612b75828587612afb565b9150612b818284612b51565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b612bc1816124e1565b82525050565b6000612bd38383612bb8565b60208301905092915050565b6000602082019050919050565b6000612bf782612b92565b612c018185612b9d565b9350612c0c83612ba8565b8060005b83811015612c3d578151612c248882612bc7565b9750612c2f83612bdf565b925050600181019050612c10565b5085935050505092915050565b6000612c568284612bec565b915081905092915050565b6000612c6d8285612b51565b601482019150612c7d8284612bec565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cc3826125b8565b9150612cce836125b8565b9250828201905080821115612ce657612ce5612c89565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d26826125f3565b915063ffffffff8203612d3c57612d3b612c89565b5b600182019050919050565b6000612d52826124e1565b9150612d5d836124e1565b9250828201905067ffffffffffffffff811115612d7d57612d7c612c89565b5b92915050565b600082825260208201905092915050565b612d9d816124e1565b82525050565b6000612daf8383612d94565b60208301905092915050565b6000612dc682612b92565b612dd08185612d83565b9350612ddb83612ba8565b8060005b83811015612e0c578151612df38882612da3565b9750612dfe83612bdf565b925050600181019050612ddf565b5085935050505092915050565b600082825260208201905092915050565b6000612e368385612e19565b9350612e43838584612aec565b612e4c83612429565b840190509392505050565b612e60816125f3565b82525050565b612e6f8161262f565b82525050565b612e7e816125b8565b82525050565b60a082016000820151612e9a6000850182612e57565b506020820151612ead6020850182612d94565b506040820151612ec06040850182612d94565b506060820151612ed36060850182612e66565b506080820151612ee66080850182612e75565b50505050565b6000610100820190508181036000830152612f078189612dbb565b90508181036020830152612f1c818789612e2a565b90508181036040830152612f31818587612e2a565b9050612f406060830184612e84565b979650505050505050565b6000819050919050565b6000612f64602084018461250c565b905092915050565b6000602082019050919050565b6000612f858385612b9d565b9350612f9082612f4b565b8060005b85811015612fc957612fa68284612f55565b612fb08882612bc7565b9750612fbb83612f6c565b925050600181019050612f94565b5085925050509392505050565b6000612fe3828486612f79565b91508190509392505050565b6000612ffa826125f3565b91506000820361300d5761300c612c89565b5b600182039050919050565b60006130248385612d83565b935061302f82612f4b565b8060005b85811015613068576130458284612f55565b61304f8882612da3565b975061305a83612f6c565b925050600181019050613033565b5085925050509392505050565b600060e0820190508181036000830152613090818789613018565b905081810360208301526130a5818587612e2a565b90506130b46040830184612e84565b9695505050505050565b600060c08201905081810360008301526130d9818587613018565b90506130e86020830184612e84565b949350505050565b600060208284031215613106576131056123ba565b5b60006131148482850161250c565b91505092915050565b6000613128826124e1565b9150613133836124e1565b9250828203905067ffffffffffffffff81111561315357613152612c89565b5b92915050565b6000613164826124e1565b915061316f836124e1565b925082820261317d816124e1565b915080821461318f5761318e612c89565b5b5092915050565b60006131a1826125b8565b91506131ac836125b8565b92508282039050818111156131c4576131c3612c89565b5b92915050565b6131d3816125b8565b82525050565b600060e08201905081810360008301526131f4818688613018565b905061320360208301856131ca565b6132106040830184612e84565b95945050505050565b600060c08201905081810360008301526132338185612dbb565b90506132426020830184612e84565b9392505050565b60008160e01b9050919050565b600061326182613249565b9050919050565b613279613274826125f3565b613256565b82525050565b60008160c01b9050919050565b60006132978261327f565b9050919050565b6132af6132aa826124e1565b61328c565b82525050565b6000819050919050565b6132d06132cb826125b8565b6132b5565b82525050565b60008160f81b9050919050565b60006132ee826132d6565b9050919050565b6000613300826132e3565b9050919050565b6133186133138261262f565b6132f5565b82525050565b600061332a8288613268565b60048201915061333a828761329e565b60088201915061334a828661329e565b60088201915061335a82856132bf565b60208201915061336a8284613307565b6001820191508190509695505050505050565b6000613388826125f3565b9150613393836125f3565b9250828203905063ffffffff8111156133af576133ae612c89565b5b92915050565b60006133c0826125f3565b91506133cb836125f3565b9250828201905063ffffffff8111156133e7576133e6612c89565b5b92915050565b6133f68161294b565b82525050565b600060608201905061341160008301866133ed565b61341e60208301856133ed565b61342b60408301846131ca565b949350505050565b6000815190506134428161263b565b92915050565b60006020828403121561345e5761345d6123ba565b5b600061346c84828501613433565b91505092915050565b600060408201905061348a60008301856133ed565b61349760208301846131ca565b9392505050565b60006134a9826125b8565b91506134b4836125b8565b92508282026134c2816125b8565b915082820484148315176134d9576134d8612c89565b5b509291505056fea2646970667358221220a3f0371b454175ff32596a7b7a17237c2c068771eae491cdf993246ce325958c64736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100625760003560e01c806306e8fb9c1461006757806312b3fc19146100835780635fec6dd01461009f578063686e682c146100bb578063bc26e7e5146100d7578063bf0f2fb2146100f3575b600080fd5b610081600480360381019061007c91906126f3565b61010f565b005b61009d60048036038101906100989190612822565b610bda565b005b6100b960048036038101906100b491906128b7565b610e9b565b005b6100d560048036038101906100d091906128b7565b61115a565b005b6100f160048036038101906100ec9190612989565b6114c1565b005b61010d60048036038101906101089190612a12565b6115ca565b005b600061011961182a565b90506000610125611866565b9050600087519050600467ffffffffffffffff168110806101505750600d67ffffffffffffffff1681115b8061017257506001600367ffffffffffffffff168261016f9190612ab0565b14155b156101a9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a9050146101f0576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a3360405160200161020793929190612b68565b6040516020818303038152906040528051906020012090506000801b8460000160008381526020019081526020016000205414610270576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016102839190612c4a565b6040516020818303038152906040528051906020012060001c1760001b8460000160008381526020019081526020016000208190555050600033896040516020016102cf929190612c61565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036103a7576000866000015163ffffffff1614158061033457506000866020015167ffffffffffffffff1614155b8061034e57506000866040015167ffffffffffffffff1614155b8061035e57506000866080015114155b8061036b57508560600151155b156103a2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f2565b6103b0866118a2565b81146103e8576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f1866118ee565b5b5085856080018181516104059190612cb8565b915081815250506000856060015115610a87576000805b84811015610a515760008c828151811061043957610438612cec565b5b60200260200101519050856001836104519190612cb8565b101561053f578c6001836104659190612cb8565b8151811061047657610475612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff1611156104cb576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c6001836104d99190612cb8565b815181106104ea576104e9612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361053e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610726576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156108205760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156107e757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561081e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6108298161192c565b87600001600c9054906101000a900463ffffffff1663ffffffff1681600001805161085390612d1b565b63ffffffff16908163ffffffff1681525063ffffffff1611156108a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806080015160200151846108b69190612d47565b93508060200151856108c89190612d47565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061041c565b50610a6f81610a5f876119f4565b89611a699092919063ffffffff16565b610a8560018087611ab99092919063ffffffff16565b505b856000018051610a9690612d1b565b63ffffffff16908163ffffffff1681525050610b09818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b15610b40576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b49866118a2565b8560010160008481526020019081526020016000208190555060008714610b7457610b7387611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610bc496959493929190612eec565b60405180910390a2505050505050505050505050565b6000610be461182a565b90506000868633604051602001610bfd93929190612b68565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610c75576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610c8b929190612fd6565b604051602081830303815290604052805190602001201690508083831614610cdf576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d39338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a611d11909392919063ffffffff16565b9050866060015115610ddc576000610d968a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a611de9565b5090506000610da3611866565b9050610dc282610db2836119f4565b8b611a699092919063ffffffff16565b610dd96000600183611ab99092919063ffffffff16565b50505b866000018051610deb90612fef565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610e1f876118a2565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610e86959493929190613075565b60405180910390a25050505050505050505050565b6000610ea561182a565b90506000610f0133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050826060015115610f3f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f49611866565b9050600080610fa0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506001886000015188611de9565b915091508686608001818151610fb69190612cb8565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff1681525050610ff7836119f4565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506110306001876000015185611ab99092919063ffffffff16565b611091818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b156110c8576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110d1866118a2565b8560010160008681526020019081526020016000208190555060008711156110fd576110fc87611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a89604051611147939291906130be565b60405180910390a2505050505050505050565b600061116461182a565b905060006111c033878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b90506111cb836118ee565b60006111d5611866565b905060008460600151156113245760008089899050905060005b8181101561130357600061120161182a565b60060160008d8d8581811061121957611218612cec565b5b905060200201602081019061122e91906130f0565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff1643611294919061311d565b61129e9190613159565b8160020160000160049054906101000a900467ffffffffffffffff166112c49190612d47565b846112cf9190612d47565b93508060000160049054906101000a900467ffffffffffffffff16856112f59190612d47565b9450816001019150506111ef565b505061132281611312856119f4565b88611a699092919063ffffffff16565b505b8585608001511015611362576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516113749190613196565b915081815250508460600151801561139757506000856000015163ffffffff1614155b801561140057506113ff818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611b9890949392919063ffffffff16565b5b15611437576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611440856118a2565b846001016000858152602001908152602001600020819055506114633387611fc5565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516114af94939291906131d9565b60405180910390a25050505050505050565b60006114cb61182a565b9050600061152787878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050838360800181815161153b9190612cb8565b9150818152505061154b836118a2565b8260010160008381526020019081526020016000208190555061156d84611c2d565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2878787876040516115b994939291906131d9565b60405180910390a250505050505050565b60006115d461182a565b905060006115ef85858486611d11909392919063ffffffff16565b90506115fa836118ee565b6000611604611866565b905060008061161a876000886000015188611de9565b9150915061163b8261162b856119f4565b886120a89092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156116d757506116d5828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611b9890949392919063ffffffff16565b155b1561170e576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117286000886000015186611ab99092919063ffffffff16565b6000876080015114611747578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506117a3876118a2565b86600101600087815260200190815260200160002081905550600081146117cf576117ce3382611fc5565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611817929190613219565b60405180910390a2505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61185d9190613196565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6118999190613196565b90508091505090565b6000816000015182602001518360400151846080015185606001516040516020016118d195949392919061331e565b604051602081830303815290604052805190602001209050919050565b8060600151611929576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611947919061337d565b63ffffffff166119579190613159565b905080826080015160200181815161196f9190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816119a29190613159565b82608001516040018181516119b79190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611a359190613196565b611a3f9190613159565b8260000160189054906101000a900467ffffffffffffffff16611a629190612d47565b9050919050565b611a748383836120a8565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611ac28361215c565b81611b0d57808360000160048282829054906101000a900463ffffffff16611aea919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611b93565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611b3791906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611b92576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614611c2357611bbe8267ffffffffffffffff166121b5565b86608001511015611bd25760019050611c24565b6000866000015163ffffffff168587611beb9190612d47565b85611bf69190613159565b611c009190613159565b9050611c158167ffffffffffffffff166121b5565b876080015110915050611c24565b5b95945050505050565b611c3561182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611c95939291906133fc565b6020604051808303816000875af1158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613448565b611d0e576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000808484604051602001611d27929190612c61565b6040516020818303038152906040528051906020012090506000611d4a876118a2565b905060008460010160008481526020019081526020016000205490506000801b8103611da2576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114611ddb576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b8651811015611fbb576000878281518110611e0d57611e0c612cec565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff1614611f8557611e72816121d7565b87611ebd57868160000160008282829054906101000a900463ffffffff16611e9a919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611f5e565b611ec5611866565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff16611f0291906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611f5d576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff1684611f829190612d47565b93505b8060020160000160049054906101000a900467ffffffffffffffff1685611fac9190612d47565b94508260010192505050611def565b5094509492505050565b611fcd61182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161202b929190613475565b6020604051808303816000875af115801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190613448565b6120a4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff168460200151836120c5919061311d565b6120cf9190613159565b9050600081856000015163ffffffff168660400151866120ef919061311d565b6120f99190613159565b6121039190612d47565b9050846080015161211d8267ffffffffffffffff166121b5565b11612149576121358167ffffffffffffffff166121b5565b85608001516121449190613196565b61214c565b60005b8560800181815250505050505050565b61216581612316565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff166121d0919061349e565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff1643612215919061337d565b63ffffffff166122259190613159565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166122519190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff168161229d9190613159565b82600201600001600c8282829054906101000a900467ffffffffffffffff166122c69190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612372919061311d565b61237c9190613159565b6123869190613159565b8260010160009054906101000a900467ffffffffffffffff166123a99190612d47565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126123e9576123e86123c4565b5b8235905067ffffffffffffffff811115612406576124056123c9565b5b602083019150836001820283011115612422576124216123ce565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61247282612429565b810181811067ffffffffffffffff821117156124915761249061243a565b5b80604052505050565b60006124a46123b0565b90506124b08282612469565b919050565b600067ffffffffffffffff8211156124d0576124cf61243a565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b6124fe816124e1565b811461250957600080fd5b50565b60008135905061251b816124f5565b92915050565b600061253461252f846124b5565b61249a565b90508083825260208201905060208402830185811115612557576125566123ce565b5b835b81811015612580578061256c888261250c565b845260208401935050602081019050612559565b5050509392505050565b600082601f83011261259f5761259e6123c4565b5b81356125af848260208601612521565b91505092915050565b6000819050919050565b6125cb816125b8565b81146125d657600080fd5b50565b6000813590506125e8816125c2565b92915050565b600080fd5b600063ffffffff82169050919050565b61260c816125f3565b811461261757600080fd5b50565b60008135905061262981612603565b92915050565b60008115159050919050565b6126448161262f565b811461264f57600080fd5b50565b6000813590506126618161263b565b92915050565b600060a0828403121561267d5761267c6125ee565b5b61268760a061249a565b905060006126978482850161261a565b60008301525060206126ab8482850161250c565b60208301525060406126bf8482850161250c565b60408301525060606126d384828501612652565b60608301525060806126e7848285016125d9565b60808301525092915050565b6000806000806000806000610120888a031215612713576127126123ba565b5b600088013567ffffffffffffffff811115612731576127306123bf565b5b61273d8a828b016123d3565b9750975050602088013567ffffffffffffffff8111156127605761275f6123bf565b5b61276c8a828b0161258a565b955050604088013567ffffffffffffffff81111561278d5761278c6123bf565b5b6127998a828b016123d3565b945094505060606127ac8a828b016125d9565b92505060806127bd8a828b01612667565b91505092959891949750929550565b60008083601f8401126127e2576127e16123c4565b5b8235905067ffffffffffffffff8111156127ff576127fe6123c9565b5b60208301915083602082028301111561281b5761281a6123ce565b5b9250929050565b600080600080600060e0868803121561283e5761283d6123ba565b5b600086013567ffffffffffffffff81111561285c5761285b6123bf565b5b612868888289016123d3565b9550955050602086013567ffffffffffffffff81111561288b5761288a6123bf565b5b612897888289016127cc565b935093505060406128aa88828901612667565b9150509295509295909350565b60008060008060e085870312156128d1576128d06123ba565b5b600085013567ffffffffffffffff8111156128ef576128ee6123bf565b5b6128fb878288016127cc565b9450945050602061290e878288016125d9565b925050604061291f87828801612667565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129568261292b565b9050919050565b6129668161294b565b811461297157600080fd5b50565b6000813590506129838161295d565b92915050565b600080600080600061010086880312156129a6576129a56123ba565b5b60006129b488828901612974565b955050602086013567ffffffffffffffff8111156129d5576129d46123bf565b5b6129e1888289016127cc565b945094505060406129f4888289016125d9565b9250506060612a0588828901612667565b9150509295509295909350565b600080600060e08486031215612a2b57612a2a6123ba565b5b6000612a3986828701612974565b935050602084013567ffffffffffffffff811115612a5a57612a596123bf565b5b612a668682870161258a565b9250506040612a7786828701612667565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612abb826125b8565b9150612ac6836125b8565b925082612ad657612ad5612a81565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b6000612b078385612ae1565b9350612b14838584612aec565b82840190509392505050565b60008160601b9050919050565b6000612b3882612b20565b9050919050565b6000612b4a82612b2d565b9050919050565b612b62612b5d8261294b565b612b3f565b82525050565b6000612b75828587612afb565b9150612b818284612b51565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b612bc1816124e1565b82525050565b6000612bd38383612bb8565b60208301905092915050565b6000602082019050919050565b6000612bf782612b92565b612c018185612b9d565b9350612c0c83612ba8565b8060005b83811015612c3d578151612c248882612bc7565b9750612c2f83612bdf565b925050600181019050612c10565b5085935050505092915050565b6000612c568284612bec565b915081905092915050565b6000612c6d8285612b51565b601482019150612c7d8284612bec565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cc3826125b8565b9150612cce836125b8565b9250828201905080821115612ce657612ce5612c89565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d26826125f3565b915063ffffffff8203612d3c57612d3b612c89565b5b600182019050919050565b6000612d52826124e1565b9150612d5d836124e1565b9250828201905067ffffffffffffffff811115612d7d57612d7c612c89565b5b92915050565b600082825260208201905092915050565b612d9d816124e1565b82525050565b6000612daf8383612d94565b60208301905092915050565b6000612dc682612b92565b612dd08185612d83565b9350612ddb83612ba8565b8060005b83811015612e0c578151612df38882612da3565b9750612dfe83612bdf565b925050600181019050612ddf565b5085935050505092915050565b600082825260208201905092915050565b6000612e368385612e19565b9350612e43838584612aec565b612e4c83612429565b840190509392505050565b612e60816125f3565b82525050565b612e6f8161262f565b82525050565b612e7e816125b8565b82525050565b60a082016000820151612e9a6000850182612e57565b506020820151612ead6020850182612d94565b506040820151612ec06040850182612d94565b506060820151612ed36060850182612e66565b506080820151612ee66080850182612e75565b50505050565b6000610100820190508181036000830152612f078189612dbb565b90508181036020830152612f1c818789612e2a565b90508181036040830152612f31818587612e2a565b9050612f406060830184612e84565b979650505050505050565b6000819050919050565b6000612f64602084018461250c565b905092915050565b6000602082019050919050565b6000612f858385612b9d565b9350612f9082612f4b565b8060005b85811015612fc957612fa68284612f55565b612fb08882612bc7565b9750612fbb83612f6c565b925050600181019050612f94565b5085925050509392505050565b6000612fe3828486612f79565b91508190509392505050565b6000612ffa826125f3565b91506000820361300d5761300c612c89565b5b600182039050919050565b60006130248385612d83565b935061302f82612f4b565b8060005b85811015613068576130458284612f55565b61304f8882612da3565b975061305a83612f6c565b925050600181019050613033565b5085925050509392505050565b600060e0820190508181036000830152613090818789613018565b905081810360208301526130a5818587612e2a565b90506130b46040830184612e84565b9695505050505050565b600060c08201905081810360008301526130d9818587613018565b90506130e86020830184612e84565b949350505050565b600060208284031215613106576131056123ba565b5b60006131148482850161250c565b91505092915050565b6000613128826124e1565b9150613133836124e1565b9250828203905067ffffffffffffffff81111561315357613152612c89565b5b92915050565b6000613164826124e1565b915061316f836124e1565b925082820261317d816124e1565b915080821461318f5761318e612c89565b5b5092915050565b60006131a1826125b8565b91506131ac836125b8565b92508282039050818111156131c4576131c3612c89565b5b92915050565b6131d3816125b8565b82525050565b600060e08201905081810360008301526131f4818688613018565b905061320360208301856131ca565b6132106040830184612e84565b95945050505050565b600060c08201905081810360008301526132338185612dbb565b90506132426020830184612e84565b9392505050565b60008160e01b9050919050565b600061326182613249565b9050919050565b613279613274826125f3565b613256565b82525050565b60008160c01b9050919050565b60006132978261327f565b9050919050565b6132af6132aa826124e1565b61328c565b82525050565b6000819050919050565b6132d06132cb826125b8565b6132b5565b82525050565b60008160f81b9050919050565b60006132ee826132d6565b9050919050565b6000613300826132e3565b9050919050565b6133186133138261262f565b6132f5565b82525050565b600061332a8288613268565b60048201915061333a828761329e565b60088201915061334a828661329e565b60088201915061335a82856132bf565b60208201915061336a8284613307565b6001820191508190509695505050505050565b6000613388826125f3565b9150613393836125f3565b9250828203905063ffffffff8111156133af576133ae612c89565b5b92915050565b60006133c0826125f3565b91506133cb836125f3565b9250828201905063ffffffff8111156133e7576133e6612c89565b5b92915050565b6133f68161294b565b82525050565b600060608201905061341160008301866133ed565b61341e60208301856133ed565b61342b60408301846131ca565b949350505050565b6000815190506134428161263b565b92915050565b60006020828403121561345e5761345d6123ba565b5b600061346c84828501613433565b91505092915050565b600060408201905061348a60008301856133ed565b61349760208301846131ca565b9392505050565b60006134a9826125b8565b91506134b4836125b8565b92508282026134c2816125b8565b915082820484148315176134d9576134d8612c89565b5b509291505056fea2646970667358221220a3f0371b454175ff32596a7b7a17237c2c068771eae491cdf993246ce325958c64736f6c63430008120033", "userdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}}, "notice": null}, "devdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:12:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol": {"AST": {"absolutePath": "contracts/echidna/Operators.sol", "exportedSymbols": {"CoreLib": [2136], "Counters": [2533], "DEDUCTED_DIGITS": [1807], "IERC20": [2611], "ISSVNetworkCore": [1737], "ISSVOperators": [2005], "OperatorLib": [2379], "Operators": [600], "ProtocolLib": [768], "SSVModules": [2389], "SSVOperators": [1621], "SSVStorage": [2459], "SSVStorageProtocol": [1802], "StorageData": [2436], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 601, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/modules/SSVOperators.sol", "file": "../modules/SSVOperators.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 601, "sourceUnit": 1622, "src": "70:37:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 601, "sourceUnit": 769, "src": "108:38:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4, "name": "SSVOperators", "nameLocations": ["170:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1621, "src": "170:12:0"}, "id": 5, "nodeType": "InheritanceSpecifier", "src": "170:12:0"}], "canonicalName": "Operators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 600, "linearizedBaseContracts": [600, 1621, 2005, 1737], "name": "Operators", "nameLocation": "157:9:0", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 8, "libraryName": {"id": 6, "name": "Types64", "nameLocations": ["195:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "195:7:0"}, "nodeType": "UsingForDirective", "src": "189:25:0", "typeName": {"id": 7, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "207:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 11, "libraryName": {"id": 9, "name": "Types256", "nameLocations": ["225:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "225:8:0"}, "nodeType": "UsingForDirective", "src": "219:27:0", "typeName": {"id": 10, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "238:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 15, "libraryName": {"id": 12, "name": "ProtocolLib", "nameLocations": ["257:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 768, "src": "257:11:0"}, "nodeType": "UsingForDirective", "src": "251:38:0", "typeName": {"id": 14, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 13, "name": "StorageProtocol", "nameLocations": ["273:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "273:15:0"}, "referencedDeclaration": 1779, "src": "273:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 18, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "319:20:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "295:58:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 16, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "295:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "342:11:0", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 21, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "383:16:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "359:49:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 19, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "359:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "402:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"constant": false, "id": 24, "mutability": "mutable", "name": "opIds", "nameLocation": "423:5:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "414:14:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 22, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "414:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 23, "nodeType": "ArrayTypeName", "src": "414:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 26, "mutability": "mutable", "name": "sault", "nameLocation": "450:5:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "434:21:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 25, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "434:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"constant": false, "id": 28, "mutability": "mutable", "name": "minNetworkFee", "nameLocation": "476:13:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "461:28:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 27, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "461:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909", "id": 34, "name": "AssertionFailed", "nameLocation": "502:15:0", "nodeType": "EventDefinition", "parameters": {"id": 33, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 30, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "525:10:0", "nodeType": "VariableDeclaration", "scope": 34, "src": "518:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 29, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "518:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 32, "indexed": false, "mutability": "mutable", "name": "isWhitelisted", "nameLocation": "542:13:0", "nodeType": "VariableDeclaration", "scope": 34, "src": "537:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 31, "name": "bool", "nodeType": "ElementaryTypeName", "src": "537:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "517:39:0"}, "src": "496:61:0"}, {"anonymous": false, "eventSelector": "6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7", "id": 40, "name": "AssertionFailed", "nameLocation": "568:15:0", "nodeType": "EventDefinition", "parameters": {"id": 39, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 36, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "591:10:0", "nodeType": "VariableDeclaration", "scope": 40, "src": "584:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 35, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "584:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 38, "indexed": false, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "610:17:0", "nodeType": "VariableDeclaration", "scope": 40, "src": "603:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 37, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "603:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "583:45:0"}, "src": "562:67:0"}, {"body": {"id": 109, "nodeType": "Block", "src": "649:509:0", "statements": [{"expression": {"id": 45, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 43, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "659:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 44, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18, "src": "675:20:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "659:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 46, "nodeType": "ExpressionStatement", "src": "659:36:0"}, {"assignments": [49], "declarations": [{"constant": false, "id": 49, "mutability": "mutable", "name": "sp", "nameLocation": "729:2:0", "nodeType": "VariableDeclaration", "scope": 109, "src": "705:26:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 48, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 47, "name": "StorageProtocol", "nameLocations": ["705:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "705:15:0"}, "referencedDeclaration": 1779, "src": "705:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 53, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 50, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "734:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 51, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "753:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "734:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 52, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "734:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "705:54:0"}, {"expression": {"id": 58, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 54, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "769:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 56, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "772:30:0", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 1763, "src": "769:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "323134383030", "id": 57, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "805:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_214800_by_1", "typeString": "int_const 214800"}, "value": "214800"}, "src": "769:42:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 59, "nodeType": "ExpressionStatement", "src": "769:42:0"}, {"expression": {"id": 69, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 60, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "821:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 62, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "824:28:0", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 1766, "src": "821:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"hexValue": "31303030303030303030303030303030303030", "id": 65, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "863:19:0", "typeDescriptions": {"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}, "value": "1000000000000000000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}], "id": 64, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "855:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 63, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "855:7:0", "typeDescriptions": {}}}, "id": 66, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "855:28:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 67, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "884:6:0", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "855:35:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 68, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "855:37:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "821:71:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 70, "nodeType": "ExpressionStatement", "src": "821:71:0"}, {"expression": {"id": 75, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 71, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "902:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 73, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "905:26:0", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1751, "src": "902:29:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "353030", "id": 74, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "934:3:0", "typeDescriptions": {"typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500"}, "value": "500"}, "src": "902:35:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 76, "nodeType": "ExpressionStatement", "src": "902:35:0"}, {"expression": {"id": 81, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 77, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "947:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 79, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "950:24:0", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "947:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "977:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "947:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 82, "nodeType": "ExpressionStatement", "src": "947:36:0"}, {"expression": {"id": 87, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 83, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "993:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 85, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "996:24:0", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1772, "src": "993:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 86, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1023:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "993:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 88, "nodeType": "ExpressionStatement", "src": "993:36:0"}, {"expression": {"id": 93, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 89, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1039:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 91, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1042:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "1039:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31303030", "id": 92, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1067:4:0", "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}, "src": "1039:32:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 94, "nodeType": "ExpressionStatement", "src": "1039:32:0"}, {"expression": {"id": 101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 95, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1081:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 97, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1084:14:0", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "1081:17:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 98, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "1101:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"hexValue": "32", "id": 99, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1117:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "1101:17:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1081:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 102, "nodeType": "ExpressionStatement", "src": "1081:37:0"}, {"expression": {"arguments": [{"hexValue": "30", "id": 106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1149:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"id": 103, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1129:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 105, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1132:16:0", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 671, "src": "1129:19:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1779_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1129:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 108, "nodeType": "ExpressionStatement", "src": "1129:22:0"}]}, "id": 110, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 41, "nodeType": "ParameterList", "parameters": [], "src": "646:2:0"}, "returnParameters": {"id": 42, "nodeType": "ParameterList", "parameters": [], "src": "649:0:0"}, "scope": 600, "src": "635:523:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 166, "nodeType": "Block", "src": "1226:306:0", "statements": [{"assignments": [116], "declarations": [{"constant": false, "id": 116, "mutability": "mutable", "name": "randomBytes", "nameLocation": "1249:11:0", "nodeType": "VariableDeclaration", "scope": 166, "src": "1236:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 115, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1236:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 121, "initialValue": {"arguments": [{"hexValue": "3438", "id": 119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1273:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}], "id": 118, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1263:9:0", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 117, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1267:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1263:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1236:40:0"}, {"body": {"id": 159, "nodeType": "Block", "src": "1316:165:0", "statements": [{"expression": {"id": 157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 132, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "1330:11:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 134, "indexExpression": {"id": 133, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1342:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1330:14:0", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 144, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1409:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 145, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1416:5:0", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1422:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1416:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 147, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1433:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1437:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "1433:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 149, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1445:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 142, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1392:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 143, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1396:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1392:16:0", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 150, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1392:55:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 141, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1382:9:0", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 151, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1382:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 140, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:4:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 139, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1377:4:0", "typeDescriptions": {}}}, "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:72:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "323536", "id": 153, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1452:3:0", "typeDescriptions": {"typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256"}, "value": "256"}, "src": "1377:78:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 138, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1371:5:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 137, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1371:5:0", "typeDescriptions": {}}}, "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1371:85:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 136, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1347:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 135, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "1347:6:0", "typeDescriptions": {}}}, "id": 156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1347:123:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "1330:140:0", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 158, "nodeType": "ExpressionStatement", "src": "1330:140:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 126, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1303:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "3438", "id": 127, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1307:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "src": "1303:6:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 160, "initializationExpression": {"assignments": [123], "declarations": [{"constant": false, "id": 123, "mutability": "mutable", "name": "i", "nameLocation": "1296:1:0", "nodeType": "VariableDeclaration", "scope": 160, "src": "1291:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 122, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1291:4:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 125, "initialValue": {"hexValue": "30", "id": 124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1300:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1291:10:0"}, "loopExpression": {"expression": {"id": 130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1311:3:0", "subExpression": {"id": 129, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1311:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 131, "nodeType": "ExpressionStatement", "src": "1311:3:0"}, "nodeType": "ForStatement", "src": "1286:195:0"}, {"expression": {"id": 162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1490:7:0", "subExpression": {"id": 161, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1490:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 163, "nodeType": "ExpressionStatement", "src": "1490:7:0"}, {"expression": {"id": 164, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "1514:11:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 114, "id": 165, "nodeType": "Return", "src": "1507:18:0"}]}, "id": 167, "implemented": true, "kind": "function", "modifiers": [], "name": "_generatePublicKey", "nameLocation": "1173:18:0", "nodeType": "FunctionDefinition", "parameters": {"id": 111, "nodeType": "ParameterList", "parameters": [], "src": "1191:2:0"}, "returnParameters": {"id": 114, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 113, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 167, "src": "1212:12:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 112, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1212:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1211:14:0"}, "scope": 600, "src": "1164:368:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 219, "nodeType": "Block", "src": "1608:278:0", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 177, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "1626:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 178, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 169, "src": "1632:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1626:9:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d6178206d7573742062652067726561746572207468616e206d696e", "id": 180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1637:30:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_61d0c281bad020c47ec6f2801de2e56dc066854a8b9ad695cfc8a5e8de45a38e", "typeString": "literal_string \"Max must be greater than min\""}, "value": "Max must be greater than min"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_61d0c281bad020c47ec6f2801de2e56dc066854a8b9ad695cfc8a5e8de45a38e", "typeString": "literal_string \"Max must be greater than min\""}], "id": 176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1618:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1618:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 182, "nodeType": "ExpressionStatement", "src": "1618:50:0"}, {"assignments": [184], "declarations": [{"constant": false, "id": 184, "mutability": "mutable", "name": "randomHash", "nameLocation": "1686:10:0", "nodeType": "VariableDeclaration", "scope": 219, "src": "1678:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 183, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1678:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 196, "initialValue": {"arguments": [{"arguments": [{"arguments": [{"id": 190, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1734:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 191, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1741:5:0", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1747:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1741:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 188, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1717:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 189, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1721:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1717:16:0", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 193, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1717:40:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 187, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1707:9:0", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1707:51:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 186, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1699:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 185, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1699:7:0", "typeDescriptions": {}}}, "id": 195, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1699:60:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1678:81:0"}, {"expression": {"id": 198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1769:7:0", "subExpression": {"id": 197, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1769:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 199, "nodeType": "ExpressionStatement", "src": "1769:7:0"}, {"assignments": [201], "declarations": [{"constant": false, "id": 201, "mutability": "mutable", "name": "reducedHash", "nameLocation": "1793:11:0", "nodeType": "VariableDeclaration", "scope": 219, "src": "1786:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 200, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1786:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 206, "initialValue": {"arguments": [{"id": 204, "name": "randomHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 184, "src": "1814:10:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 203, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1807:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 202, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1807:6:0", "typeDescriptions": {}}}, "id": 205, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1807:18:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1786:39:0"}, {"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 207, "name": "reducedHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 201, "src": "1843:11:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 208, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "1858:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 209, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 169, "src": "1864:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1858:9:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1870:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1858:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 213, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1857:15:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1843:29:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 215, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1842:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 216, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 169, "src": "1876:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1842:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 175, "id": 218, "nodeType": "Return", "src": "1835:44:0"}]}, "functionSelector": "41bfe2ba", "id": 220, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateFee", "nameLocation": "1547:12:0", "nodeType": "FunctionDefinition", "parameters": {"id": 172, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 169, "mutability": "mutable", "name": "min", "nameLocation": "1567:3:0", "nodeType": "VariableDeclaration", "scope": 220, "src": "1560:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 168, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1560:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 171, "mutability": "mutable", "name": "max", "nameLocation": "1579:3:0", "nodeType": "VariableDeclaration", "scope": 220, "src": "1572:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 170, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1572:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1559:24:0"}, "returnParameters": {"id": 175, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 174, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 220, "src": "1600:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 173, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1600:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1599:8:0"}, "scope": 600, "src": "1538:348:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 269, "nodeType": "Block", "src": "1932:383:0", "statements": [{"assignments": [224], "declarations": [{"constant": false, "id": 224, "mutability": "mutable", "name": "minN", "nameLocation": "1949:4:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "1942:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 223, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1942:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 226, "initialValue": {"id": 225, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "1956:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1942:27:0"}, {"assignments": [228], "declarations": [{"constant": false, "id": 228, "mutability": "mutable", "name": "maxN", "nameLocation": "1986:4:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "1979:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 227, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1979:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 233, "initialValue": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 229, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "1993:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2012:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "1993:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 231, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1993:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 232, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2019:14:0", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "1993:40:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1979:54:0"}, {"assignments": [235], "declarations": [{"constant": false, "id": 235, "mutability": "mutable", "name": "publicKey", "nameLocation": "2057:9:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "2044:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 234, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2044:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 238, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 236, "name": "_generatePublicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "2069:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () returns (bytes memory)"}}, "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2069:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2044:45:0"}, {"assignments": [240], "declarations": [{"constant": false, "id": 240, "mutability": "mutable", "name": "fee", "nameLocation": "2106:3:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "2099:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 239, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2099:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 245, "initialValue": {"arguments": [{"id": 242, "name": "minN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "2125:4:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 243, "name": "maxN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, "src": "2131:4:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 241, "name": "_generateFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, "src": "2112:12:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint64_$returns$_t_uint64_$", "typeString": "function (uint64,uint64) returns (uint64)"}}, "id": 244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2112:24:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2099:37:0"}, {"clauses": [{"block": {"id": 260, "nodeType": "Block", "src": "2217:47:0", "statements": [{"expression": {"arguments": [{"id": 257, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 252, "src": "2242:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 254, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2231:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2237:4:0", "memberName": "push", "nodeType": "MemberAccess", "src": "2231:10:0", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint64_$dyn_storage_ptr_$_t_uint64_$returns$__$attached_to$_t_array$_t_uint64_$dyn_storage_ptr_$", "typeString": "function (uint64[] storage pointer,uint64)"}}, "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2231:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 259, "nodeType": "ExpressionStatement", "src": "2231:22:0"}]}, "errorName": "", "id": 261, "nodeType": "TryCatchClause", "parameters": {"id": 253, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 252, "mutability": "mutable", "name": "operatorId", "nameLocation": "2205:10:0", "nodeType": "VariableDeclaration", "scope": 261, "src": "2198:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 251, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2198:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2197:19:0"}, "src": "2189:75:0"}, {"block": {"id": 266, "nodeType": "Block", "src": "2271:38:0", "statements": [{"expression": {"arguments": [{"hexValue": "66616c7365", "id": 263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2292:5:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 262, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "2285:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2285:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 265, "nodeType": "ExpressionStatement", "src": "2285:13:0"}]}, "errorName": "", "id": 267, "nodeType": "TryCatchClause", "src": "2265:44:0"}], "externalCall": {"arguments": [{"id": 248, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "2173:9:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 249, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 240, "src": "2184:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 246, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2151:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2156:16:0", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 919, "src": "2151:21:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_uint64_$returns$_t_uint64_$", "typeString": "function (bytes memory,uint64) external returns (uint64)"}}, "id": 250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2151:37:0", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 268, "nodeType": "TryStatement", "src": "2147:162:0"}]}, "functionSelector": "249eaafa", "id": 270, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_createOperator", "nameLocation": "1901:21:0", "nodeType": "FunctionDefinition", "parameters": {"id": 221, "nodeType": "ParameterList", "parameters": [], "src": "1922:2:0"}, "returnParameters": {"id": 222, "nodeType": "ParameterList", "parameters": [], "src": "1932:0:0"}, "scope": 600, "src": "1892:423:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 294, "nodeType": "Block", "src": "2405:124:0", "statements": [{"expression": {"id": 285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 277, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2415:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 278, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2428:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 281, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2448:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2454:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "2448:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 280, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2441:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 279, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2441:6:0", "typeDescriptions": {}}}, "id": 283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2441:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2428:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2415:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 286, "nodeType": "ExpressionStatement", "src": "2415:46:0"}, {"expression": {"arguments": [{"id": 290, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2498:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 291, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, "src": "2510:11:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 287, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2472:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 289, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2477:20:0", "memberName": "setOperatorWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 1088, "src": "2472:25:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address) external"}}, "id": 292, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2472:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 293, "nodeType": "ExpressionStatement", "src": "2472:50:0"}]}, "functionSelector": "60e7474e", "id": 295, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_setOperatorWhitelist", "nameLocation": "2330:27:0", "nodeType": "FunctionDefinition", "parameters": {"id": 275, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 272, "mutability": "mutable", "name": "operatorId", "nameLocation": "2365:10:0", "nodeType": "VariableDeclaration", "scope": 295, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 271, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2358:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 274, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2385:11:0", "nodeType": "VariableDeclaration", "scope": 295, "src": "2377:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 273, "name": "address", "nodeType": "ElementaryTypeName", "src": "2377:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2357:40:0"}, "returnParameters": {"id": 276, "nodeType": "ParameterList", "parameters": [], "src": "2405:0:0"}, "scope": 600, "src": "2321:208:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 358, "nodeType": "Block", "src": "2596:464:0", "statements": [{"expression": {"id": 308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 300, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2606:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 301, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2619:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 304, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2639:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2645:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "2639:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 303, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2632:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 302, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2632:6:0", "typeDescriptions": {}}}, "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2632:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2619:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2606:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 309, "nodeType": "ExpressionStatement", "src": "2606:46:0"}, {"assignments": [312], "declarations": [{"constant": false, "id": 312, "mutability": "mutable", "name": "operator", "nameLocation": "2680:8:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "2663:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 311, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 310, "name": "Operator", "nameLocations": ["2663:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "2663:8:0"}, "referencedDeclaration": 1650, "src": "2663:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 319, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 313, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "2691:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2702:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "2691:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 315, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2691:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 316, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2709:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2691:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 318, "indexExpression": {"id": 317, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2719:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2691:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "2663:67:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 321, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 312, "src": "2748:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 322, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2757:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2748:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2766:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "2748:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 324, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2775:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2748:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f70657261746f7220646f6573206e6f7420657869737473", "id": 326, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2778:26:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}, "value": "operator does not exists"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}], "id": 320, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2740:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2740:65:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 328, "nodeType": "ExpressionStatement", "src": "2740:65:0"}, {"assignments": [330], "declarations": [{"constant": false, "id": 330, "mutability": "mutable", "name": "fee", "nameLocation": "2823:3:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "2816:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 329, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2816:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 333, "initialValue": {"expression": {"id": 331, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 312, "src": "2829:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 332, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2838:3:0", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "2829:12:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2816:25:0"}, {"assignments": [335], "declarations": [{"constant": false, "id": 335, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "2859:13:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "2852:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2852:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 348, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 347, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 336, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, "src": "2876:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 337, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21, "src": "2883:16:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 338, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "2902:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 339, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2921:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "2902:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2902:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2928:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "2902:48:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2883:67:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 343, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2882:69:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2876:75:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 345, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2875:77:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 346, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21, "src": "2967:16:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2875:108:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2852:131:0"}, {"expression": {"arguments": [{"id": 352, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "3018:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 353, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 335, "src": "3030:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3044:6:0", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "3030:20:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3030:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 349, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2994:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2999:18:0", "memberName": "declareOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1230, "src": "2994:23:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256) external"}}, "id": 356, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2994:59:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 357, "nodeType": "ExpressionStatement", "src": "2994:59:0"}]}, "functionSelector": "0f5baea8", "id": 359, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_declareOperatorFee", "nameLocation": "2544:25:0", "nodeType": "FunctionDefinition", "parameters": {"id": 298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 297, "mutability": "mutable", "name": "operatorId", "nameLocation": "2577:10:0", "nodeType": "VariableDeclaration", "scope": 359, "src": "2570:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 296, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2570:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2569:19:0"}, "returnParameters": {"id": 299, "nodeType": "ParameterList", "parameters": [], "src": "2596:0:0"}, "scope": 600, "src": "2535:525:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 380, "nodeType": "Block", "src": "3127:109:0", "statements": [{"expression": {"id": 372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 364, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "3137:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 365, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "3150:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 368, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3170:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3176:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3170:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 367, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3163:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 366, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3163:6:0", "typeDescriptions": {}}}, "id": 370, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3163:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3150:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3137:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 373, "nodeType": "ExpressionStatement", "src": "3137:46:0"}, {"expression": {"arguments": [{"id": 377, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "3218:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 374, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3194:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3199:18:0", "memberName": "executeOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1340, "src": "3194:23:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3194:35:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 379, "nodeType": "ExpressionStatement", "src": "3194:35:0"}]}, "functionSelector": "45a5605a", "id": 381, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_executeOperatorFee", "nameLocation": "3075:25:0", "nodeType": "FunctionDefinition", "parameters": {"id": 362, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 361, "mutability": "mutable", "name": "operatorId", "nameLocation": "3108:10:0", "nodeType": "VariableDeclaration", "scope": 381, "src": "3101:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 360, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3101:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3100:19:0"}, "returnParameters": {"id": 363, "nodeType": "ParameterList", "parameters": [], "src": "3127:0:0"}, "scope": 600, "src": "3066:170:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 402, "nodeType": "Block", "src": "3299:105:0", "statements": [{"expression": {"id": 394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 386, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3309:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 387, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3322:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 390, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3342:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3348:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3342:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 389, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3335:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 388, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3335:6:0", "typeDescriptions": {}}}, "id": 392, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3335:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3322:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3309:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 395, "nodeType": "ExpressionStatement", "src": "3309:46:0"}, {"expression": {"arguments": [{"id": 399, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3386:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 396, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3366:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3371:14:0", "memberName": "removeOperator", "nodeType": "MemberAccess", "referencedDeclaration": 1025, "src": "3366:19:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3366:31:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 401, "nodeType": "ExpressionStatement", "src": "3366:31:0"}]}, "functionSelector": "36058dc4", "id": 403, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_removeOperator", "nameLocation": "3251:21:0", "nodeType": "FunctionDefinition", "parameters": {"id": 384, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 383, "mutability": "mutable", "name": "operatorId", "nameLocation": "3280:10:0", "nodeType": "VariableDeclaration", "scope": 403, "src": "3273:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 382, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3273:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3272:19:0"}, "returnParameters": {"id": 385, "nodeType": "ParameterList", "parameters": [], "src": "3299:0:0"}, "scope": 600, "src": "3242:162:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 444, "nodeType": "Block", "src": "3534:278:0", "statements": [{"expression": {"id": 416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 408, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3544:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 409, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3557:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 412, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3577:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3583:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3577:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 411, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3570:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 410, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3570:6:0", "typeDescriptions": {}}}, "id": 414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3570:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3557:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3544:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 417, "nodeType": "ExpressionStatement", "src": "3544:46:0"}, {"assignments": [420], "declarations": [{"constant": false, "id": 420, "mutability": "mutable", "name": "operator", "nameLocation": "3618:8:0", "nodeType": "VariableDeclaration", "scope": 444, "src": "3601:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 419, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 418, "name": "Operator", "nameLocations": ["3601:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "3601:8:0"}, "referencedDeclaration": 1650, "src": "3601:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 427, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 421, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "3629:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3640:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "3629:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3629:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3647:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3629:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 426, "indexExpression": {"id": 425, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3657:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3629:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3601:67:0"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 428, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3684:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 429, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3693:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "3684:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 430, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3702:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "3684:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 431, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3711:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3684:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 433, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3683:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"expression": {"id": 434, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3717:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 435, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3726:11:0", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "3717:20:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3683:54:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 443, "nodeType": "IfStatement", "src": "3679:126:0", "trueBody": {"eventCall": {"arguments": [{"id": 438, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3772:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 439, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3784:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 440, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3793:11:0", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "3784:20:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 437, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [34, 40], "referencedDeclaration": 34, "src": "3756:15:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bool_$returns$__$", "typeString": "function (uint64,bool)"}}, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3756:49:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 442, "nodeType": "EmitStatement", "src": "3751:54:0"}}]}, "functionSelector": "22ca0bed", "id": 445, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNotWhitelisted", "nameLocation": "3472:35:0", "nodeType": "FunctionDefinition", "parameters": {"id": 406, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 405, "mutability": "mutable", "name": "operatorId", "nameLocation": "3515:10:0", "nodeType": "VariableDeclaration", "scope": 445, "src": "3508:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 404, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3508:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3507:19:0"}, "returnParameters": {"id": 407, "nodeType": "ParameterList", "parameters": [], "src": "3534:0:0"}, "scope": 600, "src": "3463:349:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 506, "nodeType": "Block", "src": "3888:448:0", "statements": [{"expression": {"id": 464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 450, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "3898:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 463, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "31", "id": 451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3911:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 452, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "3916:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 455, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3937:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3943:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3937:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 454, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3930:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 453, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3930:6:0", "typeDescriptions": {}}}, "id": 457, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3930:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 458, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3953:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3930:24:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 460, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3929:26:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3916:39:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 462, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3915:41:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3911:45:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3898:58:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 465, "nodeType": "ExpressionStatement", "src": "3898:58:0"}, {"assignments": [468], "declarations": [{"constant": false, "id": 468, "mutability": "mutable", "name": "operator", "nameLocation": "3983:8:0", "nodeType": "VariableDeclaration", "scope": 506, "src": "3966:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 467, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 466, "name": "Operator", "nameLocations": ["3966:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "3966:8:0"}, "referencedDeclaration": 1650, "src": "3966:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 475, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 469, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "3994:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4005:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "3994:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3994:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 472, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4012:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3994:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 474, "indexExpression": {"id": 473, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4022:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3994:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3966:67:0"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 476, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "4062:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 477, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4071:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "4062:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 478, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4080:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "4062:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 479, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4089:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4062:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 481, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4061:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 482, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4108:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4119:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4108:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4108:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4126:25:0", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4108:43:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 487, "indexExpression": {"id": 486, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4152:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4108:55:0", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 488, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4164:17:0", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4108:73:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 489, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4185:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4108:78:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 491, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4107:80:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4061:126:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 505, "nodeType": "IfStatement", "src": "4044:286:0", "trueBody": {"id": 504, "nodeType": "Block", "src": "4198:132:0", "statements": [{"eventCall": {"arguments": [{"id": 494, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4233:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 495, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4245:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4256:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4245:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 497, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4245:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 498, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4263:25:0", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4245:43:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 500, "indexExpression": {"id": 499, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4289:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4245:55:0", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4301:17:0", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4245:73:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 493, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [34, 40], "referencedDeclaration": 40, "src": "4217:15:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (uint64,uint64)"}}, "id": 502, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4217:102:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 503, "nodeType": "EmitStatement", "src": "4212:107:0"}]}}]}, "functionSelector": "9d5ceb91", "id": 507, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNoFeeDeclared", "nameLocation": "3827:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 448, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 447, "mutability": "mutable", "name": "operatorId", "nameLocation": "3869:10:0", "nodeType": "VariableDeclaration", "scope": 507, "src": "3862:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 446, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3862:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3861:19:0"}, "returnParameters": {"id": 449, "nodeType": "ParameterList", "parameters": [], "src": "3888:0:0"}, "scope": 600, "src": "3818:518:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 547, "nodeType": "Block", "src": "4390:227:0", "statements": [{"body": {"id": 545, "nodeType": "Block", "src": "4439:172:0", "statements": [{"assignments": [522], "declarations": [{"constant": false, "id": 522, "mutability": "mutable", "name": "operator", "nameLocation": "4469:8:0", "nodeType": "VariableDeclaration", "scope": 545, "src": "4453:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 521, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 520, "name": "Operator", "nameLocations": ["4453:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "4453:8:0"}, "referencedDeclaration": 1650, "src": "4453:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 531, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 523, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4480:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4491:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4480:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4480:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4498:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "4480:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 530, "indexExpression": {"baseExpression": {"id": 527, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4508:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 529, "indexExpression": {"id": 528, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "4514:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4508:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4480:37:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4453:64:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 533, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 522, "src": "4538:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 534, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4547:14:0", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "4538:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 535, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4564:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4538:27:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 537, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 522, "src": "4569:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 538, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4578:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "4569:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 539, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4587:7:0", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "4569:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 540, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4598:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4569:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4538:61:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 532, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "4531:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 543, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4531:69:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 544, "nodeType": "ExpressionStatement", "src": "4531:69:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 513, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "4416:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 514, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4420:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4426:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4420:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4416:16:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 546, "initializationExpression": {"assignments": [511], "declarations": [{"constant": false, "id": 511, "mutability": "mutable", "name": "i", "nameLocation": "4413:1:0", "nodeType": "VariableDeclaration", "scope": 546, "src": "4405:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 510, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4405:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 512, "nodeType": "VariableDeclarationStatement", "src": "4405:9:0"}, "loopExpression": {"expression": {"id": 518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4434:3:0", "subExpression": {"id": 517, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "4434:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 519, "nodeType": "ExpressionStatement", "src": "4434:3:0"}, "nodeType": "ForStatement", "src": "4400:211:0"}]}, "functionSelector": "e7780e00", "id": 548, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorBalances", "nameLocation": "4351:29:0", "nodeType": "FunctionDefinition", "parameters": {"id": 508, "nodeType": "ParameterList", "parameters": [], "src": "4380:2:0"}, "returnParameters": {"id": 509, "nodeType": "ParameterList", "parameters": [], "src": "4390:0:0"}, "scope": 600, "src": "4342:275:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 598, "nodeType": "Block", "src": "4675:326:0", "statements": [{"assignments": [553], "declarations": [{"constant": false, "id": 553, "mutability": "mutable", "name": "sp", "nameLocation": "4708:2:0", "nodeType": "VariableDeclaration", "scope": 598, "src": "4685:25:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_memory_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 552, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 551, "name": "StorageProtocol", "nameLocations": ["4685:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "4685:15:0"}, "referencedDeclaration": 1779, "src": "4685:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 557, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 554, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "4713:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4732:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "4713:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4713:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4685:53:0"}, {"assignments": [559], "declarations": [{"constant": false, "id": 559, "mutability": "mutable", "name": "earnings", "nameLocation": "4755:8:0", "nodeType": "VariableDeclaration", "scope": 598, "src": "4748:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 558, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4748:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 560, "nodeType": "VariableDeclarationStatement", "src": "4748:15:0"}, {"body": {"id": 589, "nodeType": "Block", "src": "4812:140:0", "statements": [{"assignments": [573], "declarations": [{"constant": false, "id": 573, "mutability": "mutable", "name": "operator", "nameLocation": "4842:8:0", "nodeType": "VariableDeclaration", "scope": 589, "src": "4826:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 572, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 571, "name": "Operator", "nameLocations": ["4826:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "4826:8:0"}, "referencedDeclaration": 1650, "src": "4826:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 582, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 574, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4853:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4864:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4853:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4853:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4871:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "4853:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 581, "indexExpression": {"baseExpression": {"id": 578, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4881:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 580, "indexExpression": {"id": 579, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "4887:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4881:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4853:37:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4826:64:0"}, {"expression": {"id": 587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 583, "name": "earnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 559, "src": "4904:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 584, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 573, "src": "4916:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 585, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4925:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "4916:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 586, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4934:7:0", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "4916:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4904:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 588, "nodeType": "ExpressionStatement", "src": "4904:37:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 564, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "4789:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 565, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4793:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4799:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4793:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4789:16:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 590, "initializationExpression": {"assignments": [562], "declarations": [{"constant": false, "id": 562, "mutability": "mutable", "name": "i", "nameLocation": "4786:1:0", "nodeType": "VariableDeclaration", "scope": 590, "src": "4778:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 561, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4778:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 563, "nodeType": "VariableDeclarationStatement", "src": "4778:9:0"}, "loopExpression": {"expression": {"id": 569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4807:3:0", "subExpression": {"id": 568, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "4807:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 570, "nodeType": "ExpressionStatement", "src": "4807:3:0"}, "nodeType": "ForStatement", "src": "4773:179:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 592, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 553, "src": "4968:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_memory_ptr", "typeString": "struct StorageProtocol memory"}}, "id": 593, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4971:10:0", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1760, "src": "4968:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 594, "name": "earnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 559, "src": "4985:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4968:25:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 591, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "4961:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4961:33:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 597, "nodeType": "ExpressionStatement", "src": "4961:33:0"}]}, "functionSelector": "30eab391", "id": 599, "implemented": true, "kind": "function", "modifiers": [], "name": "check_operatorEarningsWithBalance", "nameLocation": "4632:33:0", "nodeType": "FunctionDefinition", "parameters": {"id": 549, "nodeType": "ParameterList", "parameters": [], "src": "4665:2:0"}, "returnParameters": {"id": 550, "nodeType": "ParameterList", "parameters": [], "src": "4675:0:0"}, "scope": 600, "src": "4623:378:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 601, "src": "148:4855:0", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:4959:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [1737]}, "id": 1738, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1623, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 1737, "linearizedBaseContracts": [1737], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 1633, "members": [{"constant": false, "id": 1626, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 1633, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1625, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1629, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 1633, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1628, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1632, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 1633, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1631, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 1737, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 1650, "members": [{"constant": false, "id": 1636, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1635, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1639, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1638, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1642, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1641, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1645, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1644, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1649, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 1648, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1647, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 1633, "src": "1129:8:1"}, "referencedDeclaration": 1633, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 1737, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 1660, "members": [{"constant": false, "id": 1653, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 1660, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1652, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1656, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 1660, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1655, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1659, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 1660, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1658, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 1737, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 1676, "members": [{"constant": false, "id": 1663, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1662, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1666, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1665, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1669, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1668, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1672, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1671, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1675, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1674, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 1737, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 1678, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1677, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 1680, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1679, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 1682, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1681, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 1684, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1683, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 1686, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1685, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 1688, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1687, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 1690, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1689, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 1692, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1691, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 1694, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1693, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 1696, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1695, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 1698, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1697, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 1700, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1699, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 1702, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1701, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 1704, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1703, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 1706, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1705, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 1708, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1707, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 1710, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1709, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 1712, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1711, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 1714, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1713, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 1716, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1715, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 1718, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1717, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 1720, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1719, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 1722, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1721, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 1724, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1723, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 1726, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1725, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 1728, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1727, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 1730, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1729, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 1732, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1731, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 1734, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1733, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 1736, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1735, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 1738, "src": "70:3477:1", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "exportedSymbols": {"ISSVNetworkCore": [1737], "ISSVOperators": [2005]}, "id": 2006, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1871, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1872, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2006, "sourceUnit": 1738, "src": "70:31:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1873, "name": "ISSVNetworkCore", "nameLocations": ["130:15:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1737, "src": "130:15:2"}, "id": 1874, "nodeType": "InheritanceSpecifier", "src": "130:15:2"}], "canonicalName": "ISSVOperators", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 2005, "linearizedBaseContracts": [2005, 1737], "name": "ISSVOperators", "nameLocation": "113:13:2", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1875, "nodeType": "StructuredDocumentation", "src": "152:136:2", "text": "@notice Registers a new operator\n @param publicKey The public key of the operator\n @param fee The operator's fee (SSV)"}, "functionSelector": "10e7f406", "id": 1884, "implemented": false, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "302:16:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1880, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1877, "mutability": "mutable", "name": "publicKey", "nameLocation": "334:9:2", "nodeType": "VariableDeclaration", "scope": 1884, "src": "319:24:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1876, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "319:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1879, "mutability": "mutable", "name": "fee", "nameLocation": "352:3:2", "nodeType": "VariableDeclaration", "scope": 1884, "src": "345:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1878, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "345:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "318:38:2"}, "returnParameters": {"id": 1883, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1882, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1884, "src": "375:6:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1881, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "375:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "374:8:2"}, "scope": 2005, "src": "293:90:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1885, "nodeType": "StructuredDocumentation", "src": "389:103:2", "text": "@notice Removes an existing operator\n @param operatorId The ID of the operator to be removed"}, "functionSelector": "2e168e0e", "id": 1890, "implemented": false, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "506:14:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1888, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1887, "mutability": "mutable", "name": "operatorId", "nameLocation": "528:10:2", "nodeType": "VariableDeclaration", "scope": 1890, "src": "521:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1886, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "521:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "520:19:2"}, "returnParameters": {"id": 1889, "nodeType": "ParameterList", "parameters": [], "src": "548:0:2"}, "scope": 2005, "src": "497:52:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1891, "nodeType": "StructuredDocumentation", "src": "555:152:2", "text": "@notice Sets the whitelist for an operator\n @param operatorId The ID of the operator\n @param whitelisted The address to be whitelisted"}, "functionSelector": "c90a7eab", "id": 1898, "implemented": false, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "721:20:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1896, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1893, "mutability": "mutable", "name": "operatorId", "nameLocation": "749:10:2", "nodeType": "VariableDeclaration", "scope": 1898, "src": "742:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1892, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "742:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1895, "mutability": "mutable", "name": "whitelisted", "nameLocation": "769:11:2", "nodeType": "VariableDeclaration", "scope": 1898, "src": "761:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1894, "name": "address", "nodeType": "ElementaryTypeName", "src": "761:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "741:40:2"}, "returnParameters": {"id": 1897, "nodeType": "ParameterList", "parameters": [], "src": "790:0:2"}, "scope": 2005, "src": "712:79:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1899, "nodeType": "StructuredDocumentation", "src": "797:136:2", "text": "@notice Declares the operator's fee\n @param operatorId The ID of the operator\n @param fee The fee to be declared (SSV)"}, "functionSelector": "b317c35f", "id": 1906, "implemented": false, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "947:18:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1904, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1901, "mutability": "mutable", "name": "operatorId", "nameLocation": "973:10:2", "nodeType": "VariableDeclaration", "scope": 1906, "src": "966:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1900, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "966:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1903, "mutability": "mutable", "name": "fee", "nameLocation": "993:3:2", "nodeType": "VariableDeclaration", "scope": 1906, "src": "985:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1902, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "985:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "965:32:2"}, "returnParameters": {"id": 1905, "nodeType": "ParameterList", "parameters": [], "src": "1006:0:2"}, "scope": 2005, "src": "938:69:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1907, "nodeType": "StructuredDocumentation", "src": "1013:88:2", "text": "@notice Executes the operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "8932cee0", "id": 1912, "implemented": false, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "1115:18:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1910, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1909, "mutability": "mutable", "name": "operatorId", "nameLocation": "1141:10:2", "nodeType": "VariableDeclaration", "scope": 1912, "src": "1134:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1908, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1134:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1133:19:2"}, "returnParameters": {"id": 1911, "nodeType": "ParameterList", "parameters": [], "src": "1161:0:2"}, "scope": 2005, "src": "1106:56:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1913, "nodeType": "StructuredDocumentation", "src": "1168:96:2", "text": "@notice Cancels the declared operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "23d68a6d", "id": 1918, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "1278:25:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1916, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1915, "mutability": "mutable", "name": "operatorId", "nameLocation": "1311:10:2", "nodeType": "VariableDeclaration", "scope": 1918, "src": "1304:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1914, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1304:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1303:19:2"}, "returnParameters": {"id": 1917, "nodeType": "ParameterList", "parameters": [], "src": "1331:0:2"}, "scope": 2005, "src": "1269:63:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1919, "nodeType": "StructuredDocumentation", "src": "1338:135:2", "text": "@notice Reduces the operator's fee\n @param operatorId The ID of the operator\n @param fee The new Operator's fee (SSV)"}, "functionSelector": "190d82e4", "id": 1926, "implemented": false, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "1487:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1924, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1921, "mutability": "mutable", "name": "operatorId", "nameLocation": "1512:10:2", "nodeType": "VariableDeclaration", "scope": 1926, "src": "1505:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1920, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1505:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1923, "mutability": "mutable", "name": "fee", "nameLocation": "1532:3:2", "nodeType": "VariableDeclaration", "scope": 1926, "src": "1524:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1524:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1504:32:2"}, "returnParameters": {"id": 1925, "nodeType": "ParameterList", "parameters": [], "src": "1545:0:2"}, "scope": 2005, "src": "1478:68:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1927, "nodeType": "StructuredDocumentation", "src": "1552:154:2", "text": "@notice Withdraws operator earnings\n @param operatorId The ID of the operator\n @param tokenAmount The amount of tokens to withdraw (SSV)"}, "functionSelector": "35f63767", "id": 1934, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "1720:24:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1932, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1929, "mutability": "mutable", "name": "operatorId", "nameLocation": "1752:10:2", "nodeType": "VariableDeclaration", "scope": 1934, "src": "1745:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1928, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1931, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "1772:11:2", "nodeType": "VariableDeclaration", "scope": 1934, "src": "1764:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1930, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1764:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1744:40:2"}, "returnParameters": {"id": 1933, "nodeType": "ParameterList", "parameters": [], "src": "1793:0:2"}, "scope": 2005, "src": "1711:83:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1935, "nodeType": "StructuredDocumentation", "src": "1800:92:2", "text": "@notice Withdraws all operator earnings\n @param operatorId The ID of the operator"}, "functionSelector": "4bc93b64", "id": 1940, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "1906:27:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1938, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1937, "mutability": "mutable", "name": "operatorId", "nameLocation": "1941:10:2", "nodeType": "VariableDeclaration", "scope": 1940, "src": "1934:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1936, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1934:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1933:19:2"}, "returnParameters": {"id": 1939, "nodeType": "ParameterList", "parameters": [], "src": "1961:0:2"}, "scope": 2005, "src": "1897:65:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 1941, "nodeType": "StructuredDocumentation", "src": "1968:317:2", "text": " @dev Emitted when a new operator has been added.\n @param operatorId operator's ID.\n @param owner Operator's ethereum address that can collect fees.\n @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys.\n @param fee Operator's fee."}, "eventSelector": "d839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4", "id": 1951, "name": "OperatorAdded", "nameLocation": "2296:13:2", "nodeType": "EventDefinition", "parameters": {"id": 1950, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1943, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2325:10:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2310:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1942, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2310:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1945, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2353:5:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2337:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1944, "name": "address", "nodeType": "ElementaryTypeName", "src": "2337:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1947, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "2366:9:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2360:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1946, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2360:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1949, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2385:3:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2377:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1948, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2377:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2309:80:2"}, "src": "2290:100:2"}, {"anonymous": false, "documentation": {"id": 1952, "nodeType": "StructuredDocumentation", "src": "2396:103:2", "text": " @dev Emitted when operator has been removed.\n @param operatorId operator's ID."}, "eventSelector": "0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e", "id": 1956, "name": "OperatorRemoved", "nameLocation": "2510:15:2", "nodeType": "EventDefinition", "parameters": {"id": 1955, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1954, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2541:10:2", "nodeType": "VariableDeclaration", "scope": 1956, "src": "2526:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1953, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2526:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2525:27:2"}, "src": "2504:49:2"}, {"anonymous": false, "documentation": {"id": 1957, "nodeType": "StructuredDocumentation", "src": "2559:179:2", "text": " @dev Emitted when the whitelist of an operator is updated.\n @param operatorId operator's ID.\n @param whitelisted operator's new whitelisted address."}, "eventSelector": "29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe", "id": 1963, "name": "OperatorWhitelistUpdated", "nameLocation": "2749:24:2", "nodeType": "EventDefinition", "parameters": {"id": 1962, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1959, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2789:10:2", "nodeType": "VariableDeclaration", "scope": 1963, "src": "2774:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1958, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2774:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1961, "indexed": false, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2809:11:2", "nodeType": "VariableDeclaration", "scope": 1963, "src": "2801:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1960, "name": "address", "nodeType": "ElementaryTypeName", "src": "2801:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2773:48:2"}, "src": "2743:79:2"}, {"anonymous": false, "eventSelector": "796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e327358", "id": 1973, "name": "OperatorFeeDeclared", "nameLocation": "2833:19:2", "nodeType": "EventDefinition", "parameters": {"id": 1972, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1965, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2869:5:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2853:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1964, "name": "address", "nodeType": "ElementaryTypeName", "src": "2853:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1967, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2891:10:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2876:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1966, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2876:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1969, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "2911:11:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2903:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1968, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2903:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1971, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2932:3:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2924:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1970, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2924:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2852:84:2"}, "src": "2827:110:2"}, {"anonymous": false, "eventSelector": "5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f3", "id": 1979, "name": "OperatorFeeDeclarationCancelled", "nameLocation": "2949:31:2", "nodeType": "EventDefinition", "parameters": {"id": 1978, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1975, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2997:5:2", "nodeType": "VariableDeclaration", "scope": 1979, "src": "2981:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1974, "name": "address", "nodeType": "ElementaryTypeName", "src": "2981:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1977, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3019:10:2", "nodeType": "VariableDeclaration", "scope": 1979, "src": "3004:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1976, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3004:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2980:50:2"}, "src": "2943:88:2"}, {"anonymous": false, "documentation": {"id": 1980, "nodeType": "StructuredDocumentation", "src": "3036:192:2", "text": " @dev Emitted when an operator's fee is updated.\n @param owner Operator's owner.\n @param blockNumber from which block number.\n @param fee updated fee value."}, "eventSelector": "513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef", "id": 1990, "name": "OperatorFeeExecuted", "nameLocation": "3239:19:2", "nodeType": "EventDefinition", "parameters": {"id": 1989, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1982, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3275:5:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3259:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1981, "name": "address", "nodeType": "ElementaryTypeName", "src": "3259:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1984, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3297:10:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3282:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1983, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3282:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1986, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "3317:11:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3309:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1985, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3309:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1988, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "3338:3:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3330:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3330:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3258:84:2"}, "src": "3233:110:2"}, {"anonymous": false, "eventSelector": "178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60", "id": 1998, "name": "OperatorWithdrawn", "nameLocation": "3354:17:2", "nodeType": "EventDefinition", "parameters": {"id": 1997, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1992, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3388:5:2", "nodeType": "VariableDeclaration", "scope": 1998, "src": "3372:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1991, "name": "address", "nodeType": "ElementaryTypeName", "src": "3372:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1994, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3410:10:2", "nodeType": "VariableDeclaration", "scope": 1998, "src": "3395:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1993, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3395:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1996, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3430:5:2", "nodeType": "VariableDeclaration", "scope": 1998, "src": "3422:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1995, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3422:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3371:65:2"}, "src": "3348:89:2"}, {"anonymous": false, "eventSelector": "259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec3548", "id": 2004, "name": "FeeRecipientAddressUpdated", "nameLocation": "3448:26:2", "nodeType": "EventDefinition", "parameters": {"id": 2003, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2000, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3491:5:2", "nodeType": "VariableDeclaration", "scope": 2004, "src": "3475:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1999, "name": "address", "nodeType": "ElementaryTypeName", "src": "3475:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2002, "indexed": false, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "3506:16:2", "nodeType": "VariableDeclaration", "scope": 2004, "src": "3498:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2001, "name": "address", "nodeType": "ElementaryTypeName", "src": "3498:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3474:49:2"}, "src": "3442:82:2"}], "scope": 2006, "src": "103:3423:2", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:3482:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [2136], "Counters": [2533], "IERC20": [2611], "ISSVNetworkCore": [1737], "SSVModules": [2389], "SSVStorage": [2459], "StorageData": [2436]}, "id": 2137, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2007, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2008, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2137, "sourceUnit": 2460, "src": "70:26:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2136, "linearizedBaseContracts": [2136], "name": "CoreLib", "nameLocation": "106:7:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 2015, "name": "ModuleUpgraded", "nameLocation": "126:14:3", "nodeType": "EventDefinition", "parameters": {"id": 2014, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2011, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:3", "nodeType": "VariableDeclaration", "scope": 2015, "src": "141:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}, "typeName": {"id": 2010, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2009, "name": "SSVModules", "nameLocations": ["141:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2389, "src": "141:10:3"}, "referencedDeclaration": 2389, "src": "141:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2013, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:3", "nodeType": "VariableDeclaration", "scope": 2015, "src": "170:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2012, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:3"}, "src": "120:73:3"}, {"body": {"id": 2022, "nodeType": "Block", "src": "259:36:3", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 2020, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 2019, "id": 2021, "nodeType": "Return", "src": "269:19:3"}]}, "id": 2023, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2016, "nodeType": "ParameterList", "parameters": [], "src": "218:2:3"}, "returnParameters": {"id": 2019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2018, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2023, "src": "244:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2017, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:3"}, "scope": 2136, "src": "199:96:3", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2046, "nodeType": "Block", "src": "363:136:3", "statements": [{"condition": {"id": 2038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:3", "subExpression": {"arguments": [{"id": 2035, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2025, "src": "411:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2036, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2027, "src": "415:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2030, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "378:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 2031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "378:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2032, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2033, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2431, "src": "378:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}}, "id": 2034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:3", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2578, "src": "378:32:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 2037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2045, "nodeType": "IfStatement", "src": "373:120:3", "trueBody": {"id": 2044, "nodeType": "Block", "src": "424:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2039, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "445:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1720, "src": "445:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2042, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2043, "nodeType": "RevertStatement", "src": "438:44:3"}]}}]}, "id": 2047, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2028, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2025, "mutability": "mutable", "name": "to", "nameLocation": "334:2:3", "nodeType": "VariableDeclaration", "scope": 2047, "src": "326:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2024, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2027, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:3", "nodeType": "VariableDeclaration", "scope": 2047, "src": "338:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:3"}, "returnParameters": {"id": 2029, "nodeType": "ParameterList", "parameters": [], "src": "363:0:3"}, "scope": 2136, "src": "301:198:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2073, "nodeType": "Block", "src": "547:163:3", "statements": [{"condition": {"id": 2065, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:3", "subExpression": {"arguments": [{"expression": {"id": 2057, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 2061, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:3", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$2136", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$2136", "typeString": "library CoreLib"}], "id": 2060, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2059, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:3", "typeDescriptions": {}}}, "id": 2062, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2063, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2049, "src": "626:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2052, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "562:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 2053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "562:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2054, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2055, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2431, "src": "562:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}}, "id": 2056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:3", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2610, "src": "562:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 2064, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2072, "nodeType": "IfStatement", "src": "557:147:3", "trueBody": {"id": 2071, "nodeType": "Block", "src": "635:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2066, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "656:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1720, "src": "656:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2069, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2070, "nodeType": "RevertStatement", "src": "649:44:3"}]}}]}, "id": 2074, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2049, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:3", "nodeType": "VariableDeclaration", "scope": 2074, "src": "522:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:3"}, "returnParameters": {"id": 2051, "nodeType": "ParameterList", "parameters": [], "src": "547:0:3"}, "scope": 2136, "src": "505:205:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2100, "nodeType": "Block", "src": "1352:440:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2082, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2077, "src": "1366:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 2084, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2083, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:3", "typeDescriptions": {}}}, "id": 2086, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2091, "nodeType": "IfStatement", "src": "1362:64:3", "trueBody": {"id": 2090, "nodeType": "Block", "src": "1389:37:3", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2088, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2081, "id": 2089, "nodeType": "Return", "src": "1403:12:3"}]}}, {"assignments": [2093], "declarations": [{"constant": false, "id": 2093, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:3", "nodeType": "VariableDeclaration", "scope": 2100, "src": "1622:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2092, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2094, "nodeType": "VariableDeclarationStatement", "src": "1622:12:3"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:3", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:3", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:3"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:3"}, "nodeType": "YulFunctionCall", "src": "1731:20:3"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:3"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2077, "isOffset": false, "isSlot": false, "src": "1743:7:3", "valueSize": 1}, {"declaration": 2093, "isOffset": false, "isSlot": false, "src": "1723:4:3", "valueSize": 1}], "id": 2095, "nodeType": "InlineAssembly", "src": "1700:61:3"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2096, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2093, "src": "1777:4:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2097, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2081, "id": 2099, "nodeType": "Return", "src": "1770:15:3"}]}, "documentation": {"id": 2075, "nodeType": "StructuredDocumentation", "src": "716:565:3", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 2101, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2078, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2077, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:3", "nodeType": "VariableDeclaration", "scope": 2101, "src": "1306:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2076, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:3"}, "returnParameters": {"id": 2081, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2080, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2101, "src": "1346:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2079, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:3"}, "scope": 2136, "src": "1286:506:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2134, "nodeType": "Block", "src": "1879:219:3", "statements": [{"condition": {"id": 2112, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:3", "subExpression": {"arguments": [{"id": 2110, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2106, "src": "1905:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2109, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2101, "src": "1894:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2111, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2118, "nodeType": "IfStatement", "src": "1889:81:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2113, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1928:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:3", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1732, "src": "1928:40:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2116, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2117, "nodeType": "RevertStatement", "src": "1921:49:3"}}, {"expression": {"id": 2127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2119, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "1981:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 2121, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1981:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2122, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2123, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:3", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 2410, "src": "1981:30:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2389_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 2125, "indexExpression": {"id": 2124, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2104, "src": "2012:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2126, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2106, "src": "2024:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2128, "nodeType": "ExpressionStatement", "src": "1981:56:3"}, {"eventCall": {"arguments": [{"id": 2130, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2104, "src": "2067:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, {"id": 2131, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2106, "src": "2077:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2129, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2015, "src": "2052:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$2389_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 2132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2133, "nodeType": "EmitStatement", "src": "2047:44:3"}]}, "id": 2135, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2107, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2104, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:3", "nodeType": "VariableDeclaration", "scope": 2135, "src": "1826:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}, "typeName": {"id": 2103, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2102, "name": "SSVModules", "nameLocations": ["1826:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2389, "src": "1826:10:3"}, "referencedDeclaration": 2389, "src": "1826:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2106, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:3", "nodeType": "VariableDeclaration", "scope": 2135, "src": "1847:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2105, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:3"}, "returnParameters": {"id": 2108, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:3"}, "scope": 2136, "src": "1799:299:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2137, "src": "98:2002:3", "usedErrors": []}], "src": "45:2056:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol": {"AST": {"absolutePath": "contracts/libraries/OperatorLib.sol", "exportedSymbols": {"Counters": [2533], "DEDUCTED_DIGITS": [1807], "IERC20": [2611], "ISSVNetworkCore": [1737], "OperatorLib": [2379], "SSVModules": [2389], "SSVStorage": [2459], "SSVStorageProtocol": [1802], "StorageData": [2436], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 2380, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2138, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2139, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 1738, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2140, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 2460, "src": "114:26:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2141, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 1803, "src": "141:34:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2142, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 1870, "src": "176:21:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "OperatorLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2379, "linearizedBaseContracts": [2379], "name": "OperatorLib", "nameLocation": "207:11:4", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2145, "libraryName": {"id": 2143, "name": "Types64", "nameLocations": ["231:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "231:7:4"}, "nodeType": "UsingForDirective", "src": "225:25:4", "typeName": {"id": 2144, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "243:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 2198, "nodeType": "Block", "src": "336:285:4", "statements": [{"assignments": [2152], "declarations": [{"constant": false, "id": 2152, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "353:12:4", "nodeType": "VariableDeclaration", "scope": 2198, "src": "346:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2151, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "346:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2166, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2155, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "376:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "382:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "376:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2154, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "369:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2153, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "369:6:4", "typeDescriptions": {}}}, "id": 2157, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "369:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2158, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "392:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2159, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "401:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "392:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2160, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "410:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "392:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "369:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2162, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "368:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2163, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "419:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2164, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "428:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "419:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "368:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "346:85:4"}, {"expression": {"id": 2173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2167, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "442:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2170, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "451:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "442:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2171, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "460:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1629, "src": "442:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2172, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2152, "src": "469:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "442:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2174, "nodeType": "ExpressionStatement", "src": "442:39:4"}, {"expression": {"id": 2184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2175, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "491:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2178, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "500:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "491:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2179, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "509:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "491:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2180, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2152, "src": "520:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2181, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "535:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "544:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "535:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "520:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "491:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2185, "nodeType": "ExpressionStatement", "src": "491:67:4"}, {"expression": {"id": 2196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2186, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "568:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2189, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "577:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "568:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2190, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "586:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "568:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2193, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "601:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "607:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "601:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2192, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "594:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2191, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "594:6:4", "typeDescriptions": {}}}, "id": 2195, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "594:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "568:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2197, "nodeType": "ExpressionStatement", "src": "568:46:4"}]}, "id": 2199, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshot", "nameLocation": "265:14:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2149, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2148, "mutability": "mutable", "name": "operator", "nameLocation": "312:8:4", "nodeType": "VariableDeclaration", "scope": 2199, "src": "280:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2147, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2146, "name": "ISSVNetworkCore.Operator", "nameLocations": ["280:15:4", "296:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "280:24:4"}, "referencedDeclaration": 1650, "src": "280:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "279:42:4"}, "returnParameters": {"id": 2150, "nodeType": "ParameterList", "parameters": [], "src": "336:0:4"}, "scope": 2379, "src": "256:365:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2252, "nodeType": "Block", "src": "705:285:4", "statements": [{"assignments": [2206], "declarations": [{"constant": false, "id": 2206, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "722:12:4", "nodeType": "VariableDeclaration", "scope": 2252, "src": "715:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2205, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "715:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2220, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2209, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "745:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "751:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "745:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2208, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "738:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2207, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "738:6:4", "typeDescriptions": {}}}, "id": 2211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "738:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2212, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "761:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2213, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "770:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "761:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2214, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "779:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "761:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "738:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2216, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "737:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2217, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "788:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2218, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "797:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "788:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "715:85:4"}, {"expression": {"id": 2227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2221, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "811:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2224, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "820:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "811:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2225, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "829:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1629, "src": "811:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2226, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2206, "src": "838:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "811:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2228, "nodeType": "ExpressionStatement", "src": "811:39:4"}, {"expression": {"id": 2238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2229, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "860:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2232, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "869:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "860:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2233, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "878:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "860:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2234, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2206, "src": "889:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2235, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "904:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2236, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "904:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "889:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "860:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2239, "nodeType": "ExpressionStatement", "src": "860:67:4"}, {"expression": {"id": 2250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2240, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "937:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2243, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "946:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "937:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2244, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "955:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "937:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2247, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "970:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "976:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "970:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2246, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "963:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2245, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "963:6:4", "typeDescriptions": {}}}, "id": 2249, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "937:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2251, "nodeType": "ExpressionStatement", "src": "937:46:4"}]}, "id": 2253, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshotSt", "nameLocation": "636:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2203, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2202, "mutability": "mutable", "name": "operator", "nameLocation": "686:8:4", "nodeType": "VariableDeclaration", "scope": 2253, "src": "653:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2201, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2200, "name": "ISSVNetworkCore.Operator", "nameLocations": ["653:15:4", "669:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "653:24:4"}, "referencedDeclaration": 1650, "src": "653:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "652:43:4"}, "returnParameters": {"id": 2204, "nodeType": "ParameterList", "parameters": [], "src": "705:0:4"}, "scope": 2379, "src": "627:363:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2281, "nodeType": "Block", "src": "1072:179:4", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2259, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2256, "src": "1086:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2260, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1095:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "1086:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2261, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1104:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "1086:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1113:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2269, "nodeType": "IfStatement", "src": "1082:79:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2264, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1123:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1139:20:4", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1690, "src": "1123:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1123:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2268, "nodeType": "RevertStatement", "src": "1116:45:4"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2270, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2256, "src": "1175:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2271, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1184:5:4", "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 1642, "src": "1175:14:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 2272, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1193:3:4", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1197:6:4", "memberName": "sender", "nodeType": "MemberAccess", "src": "1193:10:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1175:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2280, "nodeType": "IfStatement", "src": "1171:73:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2275, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1212:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1228:14:4", "memberName": "CallerNotOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1678, "src": "1212:30:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2278, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:32:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2279, "nodeType": "RevertStatement", "src": "1205:39:4"}}]}, "id": 2282, "implemented": true, "kind": "function", "modifiers": [], "name": "checkOwner", "nameLocation": "1005:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2257, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2256, "mutability": "mutable", "name": "operator", "nameLocation": "1048:8:4", "nodeType": "VariableDeclaration", "scope": 2282, "src": "1016:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2255, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2254, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1016:15:4", "1032:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1016:24:4"}, "referencedDeclaration": 1650, "src": "1016:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "1015:42:4"}, "returnParameters": {"id": 2258, "nodeType": "ParameterList", "parameters": [], "src": "1072:0:4"}, "scope": 2379, "src": "996:255:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2377, "nodeType": "Block", "src": "1485:831:4", "statements": [{"body": {"id": 2375, "nodeType": "Block", "src": "1537:773:4", "statements": [{"assignments": [2307], "declarations": [{"constant": false, "id": 2307, "mutability": "mutable", "name": "operatorId", "nameLocation": "1558:10:4", "nodeType": "VariableDeclaration", "scope": 2375, "src": "1551:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2306, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1551:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2311, "initialValue": {"baseExpression": {"id": 2308, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2285, "src": "1571:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2310, "indexExpression": {"id": 2309, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2300, "src": "1583:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1571:14:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1551:34:4"}, {"assignments": [2316], "declarations": [{"constant": false, "id": 2316, "mutability": "mutable", "name": "operator", "nameLocation": "1632:8:4", "nodeType": "VariableDeclaration", "scope": 2375, "src": "1599:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2315, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2314, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1599:15:4", "1615:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1599:24:4"}, "referencedDeclaration": 1650, "src": "1599:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 2321, "initialValue": {"baseExpression": {"expression": {"id": 2317, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2292, "src": "1643:1:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2318, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1645:9:4", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "1643:11:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 2320, "indexExpression": {"id": 2319, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2307, "src": "1655:10:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1643:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1599:67:4"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2322, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1684:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1693:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "1684:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2324, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1702:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "1684:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2325, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1711:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1684:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2364, "nodeType": "IfStatement", "src": "1680:507:4", "trueBody": {"id": 2363, "nodeType": "Block", "src": "1714:473:4", "statements": [{"expression": {"arguments": [{"id": 2328, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1749:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}], "id": 2327, "name": "updateSnapshotSt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2253, "src": "1732:16:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Operator_$1650_storage_ptr_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 2329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1732:26:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2330, "nodeType": "ExpressionStatement", "src": "1732:26:4"}, {"condition": {"id": 2332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1780:23:4", "subExpression": {"id": 2331, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2287, "src": "1781:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2340, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1924:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1933:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "1924:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2342, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2289, "src": "1951:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1924:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2344, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1923:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2345, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "1974:18:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 2346, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1993:4:4", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "1974:23:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 2347, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1974:25:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2000:26:4", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1751, "src": "1974:52:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1923:103:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2356, "nodeType": "IfStatement", "src": "1898:233:4", "trueBody": {"id": 2355, "nodeType": "Block", "src": "2045:86:4", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2350, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "2074:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2090:20:4", "memberName": "ExceedValidatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1718, "src": "2074:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2353, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2074:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2354, "nodeType": "RevertStatement", "src": "2067:45:4"}]}}, "id": 2357, "nodeType": "IfStatement", "src": "1776:355:4", "trueBody": {"id": 2339, "nodeType": "Block", "src": "1805:87:4", "statements": [{"expression": {"id": 2337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2333, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1827:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2335, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1836:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "1827:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2336, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2289, "src": "1854:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1827:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2338, "nodeType": "ExpressionStatement", "src": "1827:46:4"}]}}, {"expression": {"id": 2361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2358, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2297, "src": "2148:8:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 2359, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "2160:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2360, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2169:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "2160:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2148:24:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2362, "nodeType": "ExpressionStatement", "src": "2148:24:4"}]}}, {"expression": {"id": 2369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2365, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2295, "src": "2201:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 2366, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "2217:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2226:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2217:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2235:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1629, "src": "2217:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2201:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2370, "nodeType": "ExpressionStatement", "src": "2201:39:4"}, {"id": 2374, "nodeType": "UncheckedBlock", "src": "2254:46:4", "statements": [{"expression": {"id": 2372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "2282:3:4", "subExpression": {"id": 2371, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2300, "src": "2284:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2373, "nodeType": "ExpressionStatement", "src": "2282:3:4"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2302, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2300, "src": "1511:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 2303, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2285, "src": "1515:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1527:6:4", "memberName": "length", "nodeType": "MemberAccess", "src": "1515:18:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1511:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2376, "initializationExpression": {"assignments": [2300], "declarations": [{"constant": false, "id": 2300, "mutability": "mutable", "name": "i", "nameLocation": "1508:1:4", "nodeType": "VariableDeclaration", "scope": 2376, "src": "1500:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2299, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1500:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2301, "nodeType": "VariableDeclarationStatement", "src": "1500:9:4"}, "nodeType": "ForStatement", "src": "1495:815:4"}]}, "id": 2378, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperators", "nameLocation": "1266:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2293, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2285, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1307:11:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1291:27:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2283, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1291:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2284, "nodeType": "ArrayTypeName", "src": "1291:8:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2287, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1333:22:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1328:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2286, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1328:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2289, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1372:19:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1365:26:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2288, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1365:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2292, "mutability": "mutable", "name": "s", "nameLocation": "1421:1:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1401:21:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2291, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2290, "name": "StorageData", "nameLocations": ["1401:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1401:11:4"}, "referencedDeclaration": 2436, "src": "1401:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1281:147:4"}, "returnParameters": {"id": 2298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2295, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "1454:12:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1447:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2294, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1447:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2297, "mutability": "mutable", "name": "burnRate", "nameLocation": "1475:8:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1468:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2296, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1468:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1446:38:4"}, "scope": 2379, "src": "1257:1059:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2380, "src": "199:2119:4", "usedErrors": []}], "src": "45:2274:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1807], "ISSVNetworkCore": [1737], "ProtocolLib": [768], "SSVStorageProtocol": [1802], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 769, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 602, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 603, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 769, "sourceUnit": 1738, "src": "70:43:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 604, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 769, "sourceUnit": 1870, "src": "114:21:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 605, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 769, "sourceUnit": 1803, "src": "136:34:5", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 768, "linearizedBaseContracts": [768], "name": "ProtocolLib", "nameLocation": "180:11:5", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 608, "libraryName": {"id": 606, "name": "Types256", "nameLocations": ["204:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "204:8:5"}, "nodeType": "UsingForDirective", "src": "198:27:5", "typeName": {"id": 607, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 631, "nodeType": "Block", "src": "433:113:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 616, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 611, "src": "450:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 617, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1757, "src": "450:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 620, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 622, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 611, "src": "493:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 623, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1742, "src": "493:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 618, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:5", "typeDescriptions": {}}}, "id": 625, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 626, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 611, "src": "526:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 627, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "526:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 615, "id": 630, "nodeType": "Return", "src": "443:96:5"}]}, "id": 632, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:5", "nodeType": "FunctionDefinition", "parameters": {"id": 612, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 611, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:5", "nodeType": "VariableDeclaration", "scope": 632, "src": "374:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 610, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 609, "name": "StorageProtocol", "nameLocations": ["374:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "374:15:5"}, "referencedDeclaration": 1779, "src": "374:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:5"}, "returnParameters": {"id": 615, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 614, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 632, "src": "425:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 613, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:5"}, "scope": 768, "src": "342:204:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 670, "nodeType": "Block", "src": "628:196:5", "statements": [{"expression": {"arguments": [{"id": 641, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "656:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 640, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 696, "src": "638:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 643, "nodeType": "ExpressionStatement", "src": "638:21:5"}, {"expression": {"id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 644, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "670:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 646, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1757, "src": "670:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 648, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "714:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 647, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "691:22:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 651, "nodeType": "ExpressionStatement", "src": "670:47:5"}, {"expression": {"id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 652, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "727:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 654, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1742, "src": "727:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 657, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 655, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:5", "typeDescriptions": {}}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 661, "nodeType": "ExpressionStatement", "src": "727:52:5"}, {"expression": {"id": 668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 662, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "789:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 664, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "789:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 665, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 637, "src": "805:3:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 666, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:5", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "805:10:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 667, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 669, "nodeType": "ExpressionStatement", "src": "789:28:5"}]}, "id": 671, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 638, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 635, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:5", "nodeType": "VariableDeclaration", "scope": 671, "src": "578:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 634, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 633, "name": "StorageProtocol", "nameLocations": ["578:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "578:15:5"}, "referencedDeclaration": 1779, "src": "578:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 637, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:5", "nodeType": "VariableDeclaration", "scope": 671, "src": "606:11:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 636, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:5"}, "returnParameters": {"id": 639, "nodeType": "ParameterList", "parameters": [], "src": "628:0:5"}, "scope": 768, "src": "552:272:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 695, "nodeType": "Block", "src": "993:112:5", "statements": [{"expression": {"id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 677, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 674, "src": "1003:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 679, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1760, "src": "1003:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 681, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 674, "src": "1040:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 680, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "1019:20:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 682, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 684, "nodeType": "ExpressionStatement", "src": "1003:40:5"}, {"expression": {"id": 693, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 685, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 674, "src": "1053:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 687, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1748, "src": "1053:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 690, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 689, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 688, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:5", "typeDescriptions": {}}}, "id": 692, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 694, "nodeType": "ExpressionStatement", "src": "1053:45:5"}]}, "id": 696, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:5", "nodeType": "FunctionDefinition", "parameters": {"id": 675, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 674, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:5", "nodeType": "VariableDeclaration", "scope": 696, "src": "956:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 673, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 672, "name": "StorageProtocol", "nameLocations": ["956:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "956:15:5"}, "referencedDeclaration": 1779, "src": "956:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:5"}, "returnParameters": {"id": 676, "nodeType": "ParameterList", "parameters": [], "src": "993:0:5"}, "scope": 768, "src": "929:176:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 723, "nodeType": "Block", "src": "1200:126:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 721, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 704, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1217:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 705, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1760, "src": "1217:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 717, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 708, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 707, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 706, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:5", "typeDescriptions": {}}}, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 711, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1257:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 712, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1748, "src": "1257:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 714, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 715, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1283:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 716, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "1283:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 718, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1299:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 719, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1745, "src": "1299:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 703, "id": 722, "nodeType": "Return", "src": "1210:109:5"}]}, "id": 724, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:5", "nodeType": "FunctionDefinition", "parameters": {"id": 700, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 699, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:5", "nodeType": "VariableDeclaration", "scope": 724, "src": "1141:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 698, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 697, "name": "StorageProtocol", "nameLocations": ["1141:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "1141:15:5"}, "referencedDeclaration": 1779, "src": "1141:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:5"}, "returnParameters": {"id": 703, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 702, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 724, "src": "1192:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 701, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:5"}, "scope": 768, "src": "1111:215:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 766, "nodeType": "Block", "src": "1445:286:5", "statements": [{"expression": {"arguments": [{"id": 735, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 727, "src": "1473:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 734, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 696, "src": "1455:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 737, "nodeType": "ExpressionStatement", "src": "1455:21:5"}, {"condition": {"id": 739, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:5", "subExpression": {"id": 738, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 729, "src": "1491:22:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 747, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 727, "src": "1594:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 748, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1745, "src": "1594:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 749, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 731, "src": "1618:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 751, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 754, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 753, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:5", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 752, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:5", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 755, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 756, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:5", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 764, "nodeType": "IfStatement", "src": "1589:136:5", "trueBody": {"id": 763, "nodeType": "Block", "src": "1659:66:5", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 758, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1680:15:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:5", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 1734, "src": "1680:32:5", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 761, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 762, "nodeType": "RevertStatement", "src": "1673:41:5"}]}}, "id": 765, "nodeType": "IfStatement", "src": "1486:239:5", "trueBody": {"id": 746, "nodeType": "Block", "src": "1515:68:5", "statements": [{"expression": {"id": 744, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 740, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 727, "src": "1529:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 742, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1745, "src": "1529:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 743, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 731, "src": "1553:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 745, "nodeType": "ExpressionStatement", "src": "1529:43:5"}]}}]}, "id": 767, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:5", "nodeType": "FunctionDefinition", "parameters": {"id": 732, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 727, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:5", "nodeType": "VariableDeclaration", "scope": 767, "src": "1351:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 726, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 725, "name": "StorageProtocol", "nameLocations": ["1351:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "1351:15:5"}, "referencedDeclaration": 1779, "src": "1351:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 729, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:5", "nodeType": "VariableDeclaration", "scope": 767, "src": "1379:27:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 728, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 731, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:5", "nodeType": "VariableDeclaration", "scope": 767, "src": "1408:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 730, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:5"}, "returnParameters": {"id": 733, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:5"}, "scope": 768, "src": "1332:399:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 769, "src": "172:1561:5", "usedErrors": []}], "src": "45:1689:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [2533], "IERC20": [2611], "ISSVNetworkCore": [1737], "SSVModules": [2389], "SSVStorage": [2459], "StorageData": [2436]}, "id": 2460, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2381, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2382, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2460, "sourceUnit": 1738, "src": "70:43:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 2383, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2460, "sourceUnit": 2534, "src": "114:52:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 2384, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2460, "sourceUnit": 2612, "src": "167:56:6", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 2389, "members": [{"id": 2385, "name": "SSV_OPERATORS", "nameLocation": "247:13:6", "nodeType": "EnumValue", "src": "247:13:6"}, {"id": 2386, "name": "SSV_CLUSTERS", "nameLocation": "266:12:6", "nodeType": "EnumValue", "src": "266:12:6"}, {"id": 2387, "name": "SSV_DAO", "nameLocation": "284:7:6", "nodeType": "EnumValue", "src": "284:7:6"}, {"id": 2388, "name": "SSV_VIEWS", "nameLocation": "297:9:6", "nodeType": "EnumValue", "src": "297:9:6"}], "name": "SSVModules", "nameLocation": "230:10:6", "nodeType": "EnumDefinition", "src": "225:83:6"}, {"canonicalName": "StorageData", "id": 2436, "members": [{"constant": false, "id": 2394, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "599:40:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 2393, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2391, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2392, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 2399, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "756:36:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 2398, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2396, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2397, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 2404, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "870:39:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 2403, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2401, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2402, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 2410, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "998:43:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2389_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 2409, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2407, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2406, "name": "SSVModules", "nameLocations": ["1006:10:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2389, "src": "1006:10:6"}, "referencedDeclaration": 2389, "src": "1006:10:6", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2389_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2408, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2415, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1159:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 2414, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2412, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2413, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2421, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1304:85:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 2420, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2417, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2419, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2418, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:6", "1338:24:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1660, "src": "1322:40:6"}, "referencedDeclaration": 1660, "src": "1322:40:6", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 2427, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1470:53:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 2426, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2423, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2425, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2424, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:6", "1504:8:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1488:24:6"}, "referencedDeclaration": 1650, "src": "1488:24:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 2431, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1599:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}, "typeName": {"id": 2430, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2429, "name": "IERC20", "nameLocations": ["1599:6:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2611, "src": "1599:6:6"}, "referencedDeclaration": 2611, "src": "1599:6:6", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 2435, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1686:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2434, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2433, "name": "Counters.Counter", "nameLocations": ["1686:8:6", "1695:7:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "1686:16:6"}, "referencedDeclaration": 2465, "src": "1686:16:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:6", "nodeType": "StructDefinition", "scope": 2460, "src": "419:1301:6", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2459, "linearizedBaseContracts": [2459], "name": "SSVStorage", "nameLocation": "1730:10:6", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2446, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:6", "nodeType": "VariableDeclaration", "scope": 2459, "src": "1747:98:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2437, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2445, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 2441, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 2440, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:6", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2442, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2439, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2438, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:6", "typeDescriptions": {}}}, "id": 2443, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2444, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2457, "nodeType": "Block", "src": "1915:117:6", "statements": [{"assignments": [2453], "declarations": [{"constant": false, "id": 2453, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:6", "nodeType": "VariableDeclaration", "scope": 2457, "src": "1925:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2452, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2455, "initialValue": {"id": 2454, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2446, "src": "1944:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:6"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:6", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:6", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:6"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:6"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2453, "isOffset": false, "isSlot": false, "src": "2008:8:6", "valueSize": 1}, {"declaration": 2450, "isOffset": false, "isSlot": true, "src": "1997:7:6", "suffix": "slot", "valueSize": 1}], "id": 2456, "nodeType": "InlineAssembly", "src": "1974:52:6"}]}, "id": 2458, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 2447, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:6"}, "returnParameters": {"id": 2451, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2450, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:6", "nodeType": "VariableDeclaration", "scope": 2458, "src": "1891:22:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2449, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2448, "name": "StorageData", "nameLocations": ["1891:11:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1891:11:6"}, "referencedDeclaration": 2436, "src": "1891:11:6", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:6"}, "scope": 2459, "src": "1852:180:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2460, "src": "1722:312:6", "usedErrors": []}], "src": "45:1990:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1802], "StorageProtocol": [1779]}, "id": 1803, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1739, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"canonicalName": "StorageProtocol", "id": 1779, "members": [{"constant": false, "id": 1742, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "307:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1741, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1745, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "406:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1744, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1748, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "505:26:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1747, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1751, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "598:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1750, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1754, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "683:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1753, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1757, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "758:22:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1756, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1760, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "833:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1759, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1763, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "945:37:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1762, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1766, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1052:35:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1769, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1166:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1768, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1772, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1278:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1771, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1775, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1397:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1774, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1778, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1504:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1777, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:7", "nodeType": "StructDefinition", "scope": 1803, "src": "201:1327:7", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1802, "linearizedBaseContracts": [1802], "name": "SSVStorageProtocol", "nameLocation": "1538:18:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1789, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:7", "nodeType": "VariableDeclaration", "scope": 1802, "src": "1563:102:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1780, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 1784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 1783, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:7", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1782, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1781, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:7", "typeDescriptions": {}}}, "id": 1786, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1787, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1800, "nodeType": "Block", "src": "1739:117:7", "statements": [{"assignments": [1796], "declarations": [{"constant": false, "id": 1796, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:7", "nodeType": "VariableDeclaration", "scope": 1800, "src": "1749:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1795, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1798, "initialValue": {"id": 1797, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1789, "src": "1768:20:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:7"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:7", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:7", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:7"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:7"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1796, "isOffset": false, "isSlot": false, "src": "1832:8:7", "valueSize": 1}, {"declaration": 1793, "isOffset": false, "isSlot": true, "src": "1821:7:7", "suffix": "slot", "valueSize": 1}], "id": 1799, "nodeType": "InlineAssembly", "src": "1798:52:7"}]}, "id": 1801, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1790, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:7"}, "returnParameters": {"id": 1794, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1793, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:7", "nodeType": "VariableDeclaration", "scope": 1801, "src": "1711:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1792, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1791, "name": "StorageProtocol", "nameLocations": ["1711:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "1711:15:7"}, "referencedDeclaration": 1779, "src": "1711:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:7"}, "scope": 1802, "src": "1672:184:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1803, "src": "1530:328:7", "usedErrors": []}], "src": "45:1814:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1807], "Types256": [1869], "Types64": [1820]}, "id": 1870, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1804, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"constant": true, "id": 1807, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:8", "nodeType": "VariableDeclaration", "scope": 1870, "src": "70:45:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1805, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 1806, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:8", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1820, "linearizedBaseContracts": [1820], "name": "Types64", "nameLocation": "126:7:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1818, "nodeType": "Block", "src": "202:47:8", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1814, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1809, "src": "219:5:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1815, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "227:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1813, "id": 1817, "nodeType": "Return", "src": "212:30:8"}]}, "id": 1819, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1810, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1809, "mutability": "mutable", "name": "value", "nameLocation": "163:5:8", "nodeType": "VariableDeclaration", "scope": 1819, "src": "156:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1808, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:8"}, "returnParameters": {"id": 1813, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1812, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1819, "src": "193:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1811, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:8"}, "scope": 1820, "src": "140:109:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1870, "src": "118:133:8", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1869, "linearizedBaseContracts": [1869], "name": "Types256", "nameLocation": "261:8:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1848, "nodeType": "Block", "src": "338:144:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1828, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1822, "src": "356:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1833, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 1831, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 1829, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 1830, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:8", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1832, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "376:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 1834, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 1836, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 1827, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1837, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1838, "nodeType": "ExpressionStatement", "src": "348:67:8"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1842, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1822, "src": "450:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1841, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1868, "src": "439:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 1843, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1844, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "459:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1840, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1839, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:8", "typeDescriptions": {}}}, "id": 1846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 1826, "id": 1847, "nodeType": "Return", "src": "425:50:8"}]}, "id": 1849, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1823, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1822, "mutability": "mutable", "name": "value", "nameLocation": "300:5:8", "nodeType": "VariableDeclaration", "scope": 1849, "src": "292:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1821, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:8"}, "returnParameters": {"id": 1826, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1825, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1849, "src": "330:6:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1824, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:8"}, "scope": 1869, "src": "276:206:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1867, "nodeType": "Block", "src": "555:102:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1859, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1857, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "573:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 1858, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "581:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1860, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 1862, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 1856, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1863, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1864, "nodeType": "ExpressionStatement", "src": "565:63:8"}, {"expression": {"id": 1865, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "645:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1855, "id": 1866, "nodeType": "Return", "src": "638:12:8"}]}, "id": 1868, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1852, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1851, "mutability": "mutable", "name": "value", "nameLocation": "516:5:8", "nodeType": "VariableDeclaration", "scope": 1868, "src": "508:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1850, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:8"}, "returnParameters": {"id": 1855, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1854, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1868, "src": "546:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:8"}, "scope": 1869, "src": "488:169:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1870, "src": "253:406:8", "usedErrors": []}], "src": "45:615:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol": {"AST": {"absolutePath": "contracts/modules/SSVOperators.sol", "exportedSymbols": {"CoreLib": [2136], "Counters": [2533], "DEDUCTED_DIGITS": [1807], "IERC20": [2611], "ISSVNetworkCore": [1737], "ISSVOperators": [2005], "OperatorLib": [2379], "SSVModules": [2389], "SSVOperators": [1621], "SSVStorage": [2459], "SSVStorageProtocol": [1802], "StorageData": [2436], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 1622, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 770, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:9"}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "../interfaces/ISSVOperators.sol", "id": 771, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2006, "src": "70:41:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 772, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 1870, "src": "112:32:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 773, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2460, "src": "145:37:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "../libraries/SSVStorageProtocol.sol", "id": 774, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 1803, "src": "183:45:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/OperatorLib.sol", "file": "../libraries/OperatorLib.sol", "id": 775, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2380, "src": "229:38:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 776, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2137, "src": "268:34:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 777, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2534, "src": "304:52:9", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 778, "name": "ISSVOperators", "nameLocations": ["383:13:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2005, "src": "383:13:9"}, "id": 779, "nodeType": "InheritanceSpecifier", "src": "383:13:9"}], "canonicalName": "SSVOperators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 1621, "linearizedBaseContracts": [1621, 2005, 1737], "name": "SSVOperators", "nameLocation": "367:12:9", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 782, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "427:20:9", "nodeType": "VariableDeclaration", "scope": 1621, "src": "403:58:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 780, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "403:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 781, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "450:11:9", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 785, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "491:16:9", "nodeType": "VariableDeclaration", "scope": 1621, "src": "467:49:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 783, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "467:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "510:6:9", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"global": false, "id": 788, "libraryName": {"id": 786, "name": "Types256", "nameLocations": ["529:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "529:8:9"}, "nodeType": "UsingForDirective", "src": "523:27:9", "typeName": {"id": 787, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "542:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 791, "libraryName": {"id": 789, "name": "Types64", "nameLocations": ["561:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "561:7:9"}, "nodeType": "UsingForDirective", "src": "555:25:9", "typeName": {"id": 790, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "573:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 795, "libraryName": {"id": 792, "name": "Counters", "nameLocations": ["591:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2533, "src": "591:8:9"}, "nodeType": "UsingForDirective", "src": "585:36:9", "typeName": {"id": 794, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 793, "name": "Counters.Counter", "nameLocations": ["604:8:9", "613:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "604:16:9"}, "referencedDeclaration": 2465, "src": "604:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}}, {"global": false, "id": 799, "libraryName": {"id": 796, "name": "OperatorLib", "nameLocations": ["632:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2379, "src": "632:11:9"}, "nodeType": "UsingForDirective", "src": "626:31:9", "typeName": {"id": 798, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 797, "name": "Operator", "nameLocations": ["648:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "648:8:9"}, "referencedDeclaration": 1650, "src": "648:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, {"baseFunctions": [1884], "body": {"id": 918, "nodeType": "Block", "src": "880:886:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 809, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "894:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "901:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "894:8:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 812, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "906:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 813, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 782, "src": "912:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "906:26:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "894:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 822, "nodeType": "IfStatement", "src": "890:103:9", "trueBody": {"id": 821, "nodeType": "Block", "src": "934:59:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 816, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "955:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "971:9:9", "memberName": "FeeTooLow", "nodeType": "MemberAccess", "referencedDeclaration": 1682, "src": "955:25:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 819, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "955:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 820, "nodeType": "RevertStatement", "src": "948:34:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 823, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1006:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 824, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "1012:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1031:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "1012:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 826, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1012:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 827, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1038:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "1012:40:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1006:46:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 835, "nodeType": "IfStatement", "src": "1002:112:9", "trueBody": {"id": 834, "nodeType": "Block", "src": "1054:60:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 829, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1075:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:10:9", "memberName": "FeeTooHigh", "nodeType": "MemberAccess", "referencedDeclaration": 1736, "src": "1075:26:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 832, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1075:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 833, "nodeType": "RevertStatement", "src": "1068:35:9"}]}}, {"assignments": [838], "declarations": [{"constant": false, "id": 838, "mutability": "mutable", "name": "s", "nameLocation": "1144:1:9", "nodeType": "VariableDeclaration", "scope": 918, "src": "1124:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 837, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 836, "name": "StorageData", "nameLocations": ["1124:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1124:11:9"}, "referencedDeclaration": 2436, "src": "1124:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 842, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 839, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "1148:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1159:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1148:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 841, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1148:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1124:41:9"}, {"assignments": [844], "declarations": [{"constant": false, "id": 844, "mutability": "mutable", "name": "hashedPk", "nameLocation": "1184:8:9", "nodeType": "VariableDeclaration", "scope": 918, "src": "1176:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 843, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1176:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 848, "initialValue": {"arguments": [{"id": 846, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 801, "src": "1205:9:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}], "id": 845, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1195:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 847, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1195:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1176:39:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 849, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1229:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 850, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1231:12:9", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 2404, "src": "1229:14:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 852, "indexExpression": {"id": 851, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 844, "src": "1244:8:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1229:24:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 853, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1257:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1229:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 860, "nodeType": "IfStatement", "src": "1225:81:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 855, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1267:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 857, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1283:21:9", "memberName": "OperatorAlreadyExists", "nodeType": "MemberAccess", "referencedDeclaration": 1730, "src": "1267:37:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 858, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1267:39:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 859, "nodeType": "RevertStatement", "src": "1260:46:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 861, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1317:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 864, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1319:14:9", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 2435, "src": "1317:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 865, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1334:9:9", "memberName": "increment", "nodeType": "MemberAccess", "referencedDeclaration": 2491, "src": "1317:26:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2465_storage_ptr_$returns$__$attached_to$_t_struct$_Counter_$2465_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer)"}}, "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1317:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 867, "nodeType": "ExpressionStatement", "src": "1317:28:9"}, {"expression": {"id": 876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 868, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1355:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 871, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1367:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 872, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1369:14:9", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 2435, "src": "1367:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 873, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1384:7:9", "memberName": "current", "nodeType": "MemberAccess", "referencedDeclaration": 2477, "src": "1367:24:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2465_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$2465_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)"}}, "id": 874, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1367:26:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 870, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1360:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 869, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1360:6:9", "typeDescriptions": {}}}, "id": 875, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1360:34:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1355:39:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 877, "nodeType": "ExpressionStatement", "src": "1355:39:9"}, {"expression": {"id": 900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 878, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1404:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 881, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1406:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "1404:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 882, "indexExpression": {"id": 880, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1416:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1404:15:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 884, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1452:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 885, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1456:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1452:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"arguments": [{"expression": {"id": 890, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1526:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 891, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1532:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "1526:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 889, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1519:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 888, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1519:6:9", "typeDescriptions": {}}}, "id": 892, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1519:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"hexValue": "30", "id": 893, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1548:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"hexValue": "30", "id": 894, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1560:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"id": 886, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1486:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1502:8:9", "memberName": "Snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1633, "src": "1486:24:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Snapshot_$1633_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Snapshot storage pointer)"}}, "id": 895, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1512:5:9", "1541:5:9", "1551:7:9"], "names": ["block", "index", "balance"], "nodeType": "FunctionCall", "src": "1486:77:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, {"hexValue": "30", "id": 896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1593:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 897, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1613:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "66616c7365", "id": 898, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1643:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 883, "name": "Operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1650, "src": "1422:8:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Operator_$1650_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 899, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1445:5:9", "1476:8:9", "1577:14:9", "1608:3:9", "1630:11:9"], "names": ["owner", "snapshot", "validatorCount", "fee", "whitelisted"], "nodeType": "FunctionCall", "src": "1422:237:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "1404:255:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 901, "nodeType": "ExpressionStatement", "src": "1404:255:9"}, {"expression": {"id": 908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 902, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1669:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 905, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1671:12:9", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 2404, "src": "1669:14:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 906, "indexExpression": {"id": 904, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 844, "src": "1684:8:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1669:24:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 907, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1696:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1669:29:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 909, "nodeType": "ExpressionStatement", "src": "1669:29:9"}, {"eventCall": {"arguments": [{"id": 911, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1728:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 912, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1732:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 913, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1736:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1732:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 914, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 801, "src": "1744:9:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 915, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1755:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 910, "name": "OperatorAdded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1951, "src": "1714:13:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", "typeString": "function (uint64,address,bytes memory,uint256)"}}, "id": 916, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1714:45:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 917, "nodeType": "EmitStatement", "src": "1709:50:9"}]}, "functionSelector": "10e7f406", "id": 919, "implemented": true, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "787:16:9", "nodeType": "FunctionDefinition", "overrides": {"id": 805, "nodeType": "OverrideSpecifier", "overrides": [], "src": "851:8:9"}, "parameters": {"id": 804, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 801, "mutability": "mutable", "name": "publicKey", "nameLocation": "819:9:9", "nodeType": "VariableDeclaration", "scope": 919, "src": "804:24:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 800, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "804:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 803, "mutability": "mutable", "name": "fee", "nameLocation": "837:3:9", "nodeType": "VariableDeclaration", "scope": 919, "src": "830:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 802, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "830:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "803:38:9"}, "returnParameters": {"id": 808, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 807, "mutability": "mutable", "name": "id", "nameLocation": "876:2:9", "nodeType": "VariableDeclaration", "scope": 919, "src": "869:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 806, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "869:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "868:11:9"}, "scope": 1621, "src": "778:988:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1890], "body": {"id": 1024, "nodeType": "Block", "src": "1833:738:9", "statements": [{"assignments": [927], "declarations": [{"constant": false, "id": 927, "mutability": "mutable", "name": "s", "nameLocation": "1863:1:9", "nodeType": "VariableDeclaration", "scope": 1024, "src": "1843:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 926, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 925, "name": "StorageData", "nameLocations": ["1843:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1843:11:9"}, "referencedDeclaration": 2436, "src": "1843:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 931, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 928, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "1867:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 929, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1878:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1867:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 930, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1867:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1843:41:9"}, {"assignments": [934], "declarations": [{"constant": false, "id": 934, "mutability": "mutable", "name": "operator", "nameLocation": "1910:8:9", "nodeType": "VariableDeclaration", "scope": 1024, "src": "1894:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 933, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 932, "name": "Operator", "nameLocations": ["1894:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1894:8:9"}, "referencedDeclaration": 1650, "src": "1894:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 939, "initialValue": {"baseExpression": {"expression": {"id": 935, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "1921:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 936, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1923:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "1921:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 938, "indexExpression": {"id": 937, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "1933:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1921:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1894:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 940, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "1954:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 942, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1963:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "1954:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1954:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 944, "nodeType": "ExpressionStatement", "src": "1954:21:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 945, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "1986:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 947, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1995:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "1986:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 948, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1986:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 949, "nodeType": "ExpressionStatement", "src": "1986:25:9"}, {"assignments": [951], "declarations": [{"constant": false, "id": 951, "mutability": "mutable", "name": "currentBalance", "nameLocation": "2028:14:9", "nodeType": "VariableDeclaration", "scope": 1024, "src": "2021:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 950, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2021:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 955, "initialValue": {"expression": {"expression": {"id": 952, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2045:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 953, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2054:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2045:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 954, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2063:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "2045:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2021:49:9"}, {"expression": {"id": 962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 956, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2081:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 959, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2090:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2081:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 960, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2099:5:9", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "2081:23:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2107:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2081:27:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 963, "nodeType": "ExpressionStatement", "src": "2081:27:9"}, {"expression": {"id": 970, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 964, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2118:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 967, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2127:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2118:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 968, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2136:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "2118:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 969, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2146:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2118:29:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 971, "nodeType": "ExpressionStatement", "src": "2118:29:9"}, {"expression": {"id": 976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 972, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2157:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 974, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2166:14:9", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "2157:23:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 975, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2183:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2157:27:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 977, "nodeType": "ExpressionStatement", "src": "2157:27:9"}, {"expression": {"id": 982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 978, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2194:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 980, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2203:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "2194:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2209:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2194:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 983, "nodeType": "ExpressionStatement", "src": "2194:16:9"}, {"condition": {"expression": {"id": 984, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2225:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 985, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2234:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2225:20:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 999, "nodeType": "IfStatement", "src": "2221:132:9", "trueBody": {"id": 998, "nodeType": "Block", "src": "2247:106:9", "statements": [{"expression": {"id": 990, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 986, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2261:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 988, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2270:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2261:20:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 989, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2284:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2261:28:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 991, "nodeType": "ExpressionStatement", "src": "2261:28:9"}, {"expression": {"id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "2303:39:9", "subExpression": {"baseExpression": {"expression": {"id": 992, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "2310:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 993, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2312:18:9", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2415, "src": "2310:20:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 995, "indexExpression": {"id": 994, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2331:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2310:32:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 997, "nodeType": "ExpressionStatement", "src": "2303:39:9"}]}}, {"expression": {"id": 1006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1000, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "2362:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1003, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2364:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2362:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1004, "indexExpression": {"id": 1002, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2374:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2362:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1005, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2388:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "2362:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1007, "nodeType": "ExpressionStatement", "src": "2362:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1008, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "2411:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2428:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2411:18:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1019, "nodeType": "IfStatement", "src": "2407:116:9", "trueBody": {"id": 1018, "nodeType": "Block", "src": "2431:92:9", "statements": [{"expression": {"arguments": [{"id": 1012, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2476:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1013, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "2488:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2503:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "2488:21:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2488:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1011, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1620, "src": "2445:30:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1016, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2445:67:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1017, "nodeType": "ExpressionStatement", "src": "2445:67:9"}]}}, {"eventCall": {"arguments": [{"id": 1021, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2553:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1020, "name": "OperatorRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1956, "src": "2537:15:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 1022, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2537:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1023, "nodeType": "EmitStatement", "src": "2532:32:9"}]}, "functionSelector": "2e168e0e", "id": 1025, "implemented": true, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "1781:14:9", "nodeType": "FunctionDefinition", "overrides": {"id": 923, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1824:8:9"}, "parameters": {"id": 922, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 921, "mutability": "mutable", "name": "operatorId", "nameLocation": "1803:10:9", "nodeType": "VariableDeclaration", "scope": 1025, "src": "1796:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 920, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1796:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1795:19:9"}, "returnParameters": {"id": 924, "nodeType": "ParameterList", "parameters": [], "src": "1833:0:9"}, "scope": 1621, "src": "1772:799:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1898], "body": {"id": 1087, "nodeType": "Block", "src": "2656:407:9", "statements": [{"assignments": [1034], "declarations": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "s", "nameLocation": "2686:1:9", "nodeType": "VariableDeclaration", "scope": 1087, "src": "2666:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1033, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1032, "name": "StorageData", "nameLocations": ["2666:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "2666:11:9"}, "referencedDeclaration": 2436, "src": "2666:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1038, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1035, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "2690:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2701:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "2690:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2690:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2666:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1039, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2717:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1042, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2719:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2717:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1043, "indexExpression": {"id": 1041, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2729:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2717:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1044, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2741:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "2717:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1045, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2717:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1046, "nodeType": "ExpressionStatement", "src": "2717:36:9"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1047, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1029, "src": "2768:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1050, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2791:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1049, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2783:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1048, "name": "address", "nodeType": "ElementaryTypeName", "src": "2783:7:9", "typeDescriptions": {}}}, "id": 1051, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2783:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2768:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1072, "nodeType": "Block", "src": "2869:67:9", "statements": [{"expression": {"id": 1070, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 1063, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2883:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1066, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2885:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2883:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1067, "indexExpression": {"id": 1065, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2895:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2883:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1068, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2907:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2883:35:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 1069, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2921:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "2883:42:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1071, "nodeType": "ExpressionStatement", "src": "2883:42:9"}]}, "id": 1073, "nodeType": "IfStatement", "src": "2764:172:9", "trueBody": {"id": 1062, "nodeType": "Block", "src": "2795:68:9", "statements": [{"expression": {"id": 1060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 1053, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2809:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1056, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2811:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2809:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1057, "indexExpression": {"id": 1055, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2821:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2809:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1058, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2833:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2809:35:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 1059, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2847:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2809:43:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1061, "nodeType": "ExpressionStatement", "src": "2809:43:9"}]}}, {"expression": {"id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1074, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2946:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1077, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2948:18:9", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2415, "src": "2946:20:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 1078, "indexExpression": {"id": 1076, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2967:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2946:32:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1079, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1029, "src": "2981:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2946:46:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1081, "nodeType": "ExpressionStatement", "src": "2946:46:9"}, {"eventCall": {"arguments": [{"id": 1083, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "3032:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1084, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1029, "src": "3044:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1082, "name": "OperatorWhitelistUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1963, "src": "3007:24:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address)"}}, "id": 1085, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3007:49:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1086, "nodeType": "EmitStatement", "src": "3002:54:9"}]}, "functionSelector": "c90a7eab", "id": 1088, "implemented": true, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "2586:20:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1027, "mutability": "mutable", "name": "operatorId", "nameLocation": "2614:10:9", "nodeType": "VariableDeclaration", "scope": 1088, "src": "2607:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1026, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2607:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1029, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2634:11:9", "nodeType": "VariableDeclaration", "scope": 1088, "src": "2626:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1028, "name": "address", "nodeType": "ElementaryTypeName", "src": "2626:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2606:40:9"}, "returnParameters": {"id": 1031, "nodeType": "ParameterList", "parameters": [], "src": "2656:0:9"}, "scope": 1621, "src": "2577:486:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1906], "body": {"id": 1229, "nodeType": "Block", "src": "3147:1226:9", "statements": [{"assignments": [1098], "declarations": [{"constant": false, "id": 1098, "mutability": "mutable", "name": "s", "nameLocation": "3177:1:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3157:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1097, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1096, "name": "StorageData", "nameLocations": ["3157:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "3157:11:9"}, "referencedDeclaration": 2436, "src": "3157:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1102, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1099, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "3181:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3192:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "3181:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1101, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3181:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3157:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1103, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "3208:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1106, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3210:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3208:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1107, "indexExpression": {"id": 1105, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "3220:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3208:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1108, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3232:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "3208:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3208:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1110, "nodeType": "ExpressionStatement", "src": "3208:36:9"}, {"assignments": [1113], "declarations": [{"constant": false, "id": 1113, "mutability": "mutable", "name": "sp", "nameLocation": "3279:2:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3255:26:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1112, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1111, "name": "StorageProtocol", "nameLocations": ["3255:15:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "3255:15:9"}, "referencedDeclaration": 1779, "src": "3255:15:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1117, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1114, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "3284:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3303:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "3284:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1116, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3284:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3255:54:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1118, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3324:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3331:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3324:8:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1121, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3336:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1122, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 782, "src": "3342:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3336:26:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3324:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1128, "nodeType": "IfStatement", "src": "3320:62:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1125, "name": "FeeTooLow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1682, "src": "3371:9:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3371:11:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1127, "nodeType": "RevertStatement", "src": "3364:18:9"}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1129, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3396:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1130, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "3402:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3405:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "3402:17:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3396:23:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1136, "nodeType": "IfStatement", "src": "3392:48:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1133, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1736, "src": "3428:10:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1134, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3428:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1135, "nodeType": "RevertStatement", "src": "3421:19:9"}}, {"assignments": [1138], "declarations": [{"constant": false, "id": 1138, "mutability": "mutable", "name": "operatorFee", "nameLocation": "3458:11:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3451:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1137, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3451:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1144, "initialValue": {"expression": {"baseExpression": {"expression": {"id": 1139, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "3472:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1140, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3474:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3472:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1142, "indexExpression": {"id": 1141, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "3484:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3472:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1143, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3496:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "3472:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3451:48:9"}, {"assignments": [1146], "declarations": [{"constant": false, "id": 1146, "mutability": "mutable", "name": "shrunkFee", "nameLocation": "3516:9:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3509:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1145, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3509:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1150, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1147, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3528:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3532:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "3528:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3528:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3509:31:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1151, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3555:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1152, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "3570:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3555:24:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1158, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "3648:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1159, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3661:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3648:14:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1161, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3666:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1162, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3681:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3666:16:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3648:34:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1169, "nodeType": "IfStatement", "src": "3644:95:9", "trueBody": {"id": 1168, "nodeType": "Block", "src": "3684:55:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1165, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1724, "src": "3705:21:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3705:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1167, "nodeType": "RevertStatement", "src": "3698:30:9"}]}}, "id": 1170, "nodeType": "IfStatement", "src": "3551:188:9", "trueBody": {"id": 1157, "nodeType": "Block", "src": "3581:57:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1154, "name": "SameFeeChangeNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1722, "src": "3602:23:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3602:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1156, "nodeType": "RevertStatement", "src": "3595:32:9"}]}}, {"assignments": [1172], "declarations": [{"constant": false, "id": 1172, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "3844:13:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3837:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1171, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3837:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1183, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1173, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3861:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1174, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3876:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1175, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "3895:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1176, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3898:22:9", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "3895:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3876:44:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1178, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3875:46:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3861:60:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1180, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3860:62:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1181, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3925:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3860:81:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3837:104:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1184, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "3956:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 1185, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1172, "src": "3968:13:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3956:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1190, "nodeType": "IfStatement", "src": "3952:63:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1187, "name": "FeeExceedsIncreaseLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1684, "src": "3990:23:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3990:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1189, "nodeType": "RevertStatement", "src": "3983:32:9"}}, {"expression": {"id": 1218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1191, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "4026:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1194, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4028:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4026:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1195, "indexExpression": {"id": 1193, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "4054:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4026:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 1197, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "4106:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1200, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4136:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4142:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4136:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4129:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1198, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4129:6:9", "typeDescriptions": {}}}, "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4129:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1203, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "4155:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1204, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4158:24:9", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "4155:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4129:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1208, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4203:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4209:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4203:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1207, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4196:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1206, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4196:6:9", "typeDescriptions": {}}}, "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4196:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1211, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "4222:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1212, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4225:24:9", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "4222:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4196:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1214, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "4252:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1215, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4255:24:9", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1772, "src": "4252:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4196:83:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1196, "name": "OperatorFeeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "4068:24:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_OperatorFeeChangeRequest_$1660_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.OperatorFeeChangeRequest storage pointer)"}}, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4068:221:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "src": "4026:263:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1219, "nodeType": "ExpressionStatement", "src": "4026:263:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1221, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4324:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4328:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "4324:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1223, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "4336:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1224, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4348:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4354:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "4348:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1226, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "4362:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1220, "name": "OperatorFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1973, "src": "4304:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4304:62:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1228, "nodeType": "EmitStatement", "src": "4299:67:9"}]}, "functionSelector": "b317c35f", "id": 1230, "implemented": true, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "3078:18:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1094, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3138:8:9"}, "parameters": {"id": 1093, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1090, "mutability": "mutable", "name": "operatorId", "nameLocation": "3104:10:9", "nodeType": "VariableDeclaration", "scope": 1230, "src": "3097:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1089, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3097:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1092, "mutability": "mutable", "name": "fee", "nameLocation": "3124:3:9", "nodeType": "VariableDeclaration", "scope": 1230, "src": "3116:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1091, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3116:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3096:32:9"}, "returnParameters": {"id": 1095, "nodeType": "ParameterList", "parameters": [], "src": "3147:0:9"}, "scope": 1621, "src": "3069:1304:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1912], "body": {"id": 1339, "nodeType": "Block", "src": "4444:926:9", "statements": [{"assignments": [1238], "declarations": [{"constant": false, "id": 1238, "mutability": "mutable", "name": "s", "nameLocation": "4474:1:9", "nodeType": "VariableDeclaration", "scope": 1339, "src": "4454:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1237, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1236, "name": "StorageData", "nameLocations": ["4454:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "4454:11:9"}, "referencedDeclaration": 2436, "src": "4454:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1242, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1239, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4478:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4489:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4478:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1241, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4478:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4454:41:9"}, {"assignments": [1245], "declarations": [{"constant": false, "id": 1245, "mutability": "mutable", "name": "operator", "nameLocation": "4521:8:9", "nodeType": "VariableDeclaration", "scope": 1339, "src": "4505:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1244, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1243, "name": "Operator", "nameLocations": ["4505:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "4505:8:9"}, "referencedDeclaration": 1650, "src": "4505:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1250, "initialValue": {"baseExpression": {"expression": {"id": 1246, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "4532:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1247, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4534:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "4532:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1249, "indexExpression": {"id": 1248, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "4544:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4532:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4505:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1251, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "4565:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4574:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "4565:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4565:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1255, "nodeType": "ExpressionStatement", "src": "4565:21:9"}, {"assignments": [1258], "declarations": [{"constant": false, "id": 1258, "mutability": "mutable", "name": "feeChangeRequest", "nameLocation": "4629:16:9", "nodeType": "VariableDeclaration", "scope": 1339, "src": "4597:48:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}, "typeName": {"id": 1257, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1256, "name": "OperatorFeeChangeRequest", "nameLocations": ["4597:24:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1660, "src": "4597:24:9"}, "referencedDeclaration": 1660, "src": "4597:24:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}, "visibility": "internal"}], "id": 1263, "initialValue": {"baseExpression": {"expression": {"id": 1259, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "4648:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1260, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4650:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4648:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1262, "indexExpression": {"id": 1261, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "4676:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4648:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4597:90:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1264, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4702:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1265, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4719:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4702:34:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4740:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4702:39:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1271, "nodeType": "IfStatement", "src": "4698:67:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1268, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1686, "src": "4750:13:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4750:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1270, "nodeType": "RevertStatement", "src": "4743:22:9"}}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1276, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1272, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4793:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4799:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4793:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 1274, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4811:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1275, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4828:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4811:34:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4793:52:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1277, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4849:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4855:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4849:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1279, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4867:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1280, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4884:15:9", "memberName": "approvalEndTime", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "4867:32:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4849:50:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4793:106:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1287, "nodeType": "IfStatement", "src": "4776:194:9", "trueBody": {"id": 1286, "nodeType": "Block", "src": "4910:60:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1283, "name": "ApprovalNotWithinTimeframe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1688, "src": "4931:26:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1284, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4931:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1285, "nodeType": "RevertStatement", "src": "4924:35:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1288, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4984:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1289, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5001:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1653, "src": "4984:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5005:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "4984:27:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4984:29:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1292, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "5016:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5035:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "5016:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5016:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1295, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5042:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "5016:40:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4984:72:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1300, "nodeType": "IfStatement", "src": "4980:97:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1297, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1736, "src": "5065:10:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5065:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1299, "nodeType": "RevertStatement", "src": "5058:19:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1301, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "5088:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1303, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5097:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "5088:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5088:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1305, "nodeType": "ExpressionStatement", "src": "5088:25:9"}, {"expression": {"id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1306, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "5123:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1308, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5132:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "5123:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 1309, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "5138:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1310, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5155:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1653, "src": "5138:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5123:35:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1312, "nodeType": "ExpressionStatement", "src": "5123:35:9"}, {"expression": {"id": 1319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1313, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "5168:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1316, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5170:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "5168:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1317, "indexExpression": {"id": 1315, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "5180:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5168:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1318, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "5194:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "5168:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1320, "nodeType": "ExpressionStatement", "src": "5168:34:9"}, {"expression": {"id": 1325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5213:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1321, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "5220:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1322, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5222:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "5220:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1324, "indexExpression": {"id": 1323, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "5248:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5220:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1326, "nodeType": "ExpressionStatement", "src": "5213:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1328, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5295:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5299:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "5295:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1330, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "5307:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1331, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5319:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5325:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "5319:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1333, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "5333:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1334, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5350:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1653, "src": "5333:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5354:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "5333:27:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5333:29:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1327, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1990, "src": "5275:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1337, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5275:88:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1338, "nodeType": "EmitStatement", "src": "5270:93:9"}]}, "functionSelector": "8932cee0", "id": 1340, "implemented": true, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "4388:18:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1234, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4435:8:9"}, "parameters": {"id": 1233, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1232, "mutability": "mutable", "name": "operatorId", "nameLocation": "4414:10:9", "nodeType": "VariableDeclaration", "scope": 1340, "src": "4407:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1231, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4407:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4406:19:9"}, "returnParameters": {"id": 1235, "nodeType": "ParameterList", "parameters": [], "src": "4444:0:9"}, "scope": 1621, "src": "4379:991:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1918], "body": {"id": 1384, "nodeType": "Block", "src": "5448:333:9", "statements": [{"assignments": [1348], "declarations": [{"constant": false, "id": 1348, "mutability": "mutable", "name": "s", "nameLocation": "5478:1:9", "nodeType": "VariableDeclaration", "scope": 1384, "src": "5458:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1347, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1346, "name": "StorageData", "nameLocations": ["5458:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "5458:11:9"}, "referencedDeclaration": 2436, "src": "5458:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1352, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1349, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "5482:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5493:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "5482:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1351, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5482:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5458:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1353, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "5509:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1356, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5511:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "5509:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1357, "indexExpression": {"id": 1355, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5521:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5509:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1358, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5533:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "5509:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1359, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5509:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1360, "nodeType": "ExpressionStatement", "src": "5509:36:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1361, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "5560:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1362, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5562:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "5560:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1364, "indexExpression": {"id": 1363, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5588:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5560:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1365, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5600:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "5560:57:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1366, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5621:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5560:62:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1371, "nodeType": "IfStatement", "src": "5556:90:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1368, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1686, "src": "5631:13:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1369, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5631:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1370, "nodeType": "RevertStatement", "src": "5624:22:9"}}, {"expression": {"id": 1376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5657:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1372, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "5664:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1373, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5666:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "5664:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1375, "indexExpression": {"id": 1374, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5692:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5664:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1377, "nodeType": "ExpressionStatement", "src": "5657:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1379, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5751:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5755:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "5751:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1381, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5763:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1378, "name": "OperatorFeeDeclarationCancelled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1979, "src": "5719:31:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$", "typeString": "function (address,uint64)"}}, "id": 1382, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5719:55:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1383, "nodeType": "EmitStatement", "src": "5714:60:9"}]}, "functionSelector": "23d68a6d", "id": 1385, "implemented": true, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "5385:25:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1344, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5439:8:9"}, "parameters": {"id": 1343, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1342, "mutability": "mutable", "name": "operatorId", "nameLocation": "5418:10:9", "nodeType": "VariableDeclaration", "scope": 1385, "src": "5411:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1341, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5411:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5410:19:9"}, "returnParameters": {"id": 1345, "nodeType": "ParameterList", "parameters": [], "src": "5448:0:9"}, "scope": 1621, "src": "5376:405:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1926], "body": {"id": 1469, "nodeType": "Block", "src": "5864:599:9", "statements": [{"assignments": [1395], "declarations": [{"constant": false, "id": 1395, "mutability": "mutable", "name": "s", "nameLocation": "5894:1:9", "nodeType": "VariableDeclaration", "scope": 1469, "src": "5874:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1394, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1393, "name": "StorageData", "nameLocations": ["5874:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "5874:11:9"}, "referencedDeclaration": 2436, "src": "5874:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1399, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1396, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "5898:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5909:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "5898:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1398, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5898:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5874:41:9"}, {"assignments": [1402], "declarations": [{"constant": false, "id": 1402, "mutability": "mutable", "name": "operator", "nameLocation": "5941:8:9", "nodeType": "VariableDeclaration", "scope": 1469, "src": "5925:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1401, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1400, "name": "Operator", "nameLocations": ["5925:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "5925:8:9"}, "referencedDeclaration": 1650, "src": "5925:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1407, "initialValue": {"baseExpression": {"expression": {"id": 1403, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "5952:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1404, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5954:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "5952:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1406, "indexExpression": {"id": 1405, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "5964:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5952:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5925:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1408, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "5985:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1410, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5994:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "5985:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5985:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1412, "nodeType": "ExpressionStatement", "src": "5985:21:9"}, {"assignments": [1414], "declarations": [{"constant": false, "id": 1414, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "6024:12:9", "nodeType": "VariableDeclaration", "scope": 1469, "src": "6017:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1413, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6017:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1418, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1415, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1389, "src": "6039:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6043:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "6039:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1417, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6039:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "6017:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1419, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1414, "src": "6065:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 1420, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6081:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1421, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6090:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "6081:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6065:28:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1426, "nodeType": "IfStatement", "src": "6061:64:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1423, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1724, "src": "6102:21:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1424, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6102:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1425, "nodeType": "RevertStatement", "src": "6095:30:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1427, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6136:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1429, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6145:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "6136:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1430, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6136:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1431, "nodeType": "ExpressionStatement", "src": "6136:25:9"}, {"expression": {"id": 1436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1432, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6171:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1434, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6180:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "6171:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1435, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1414, "src": "6186:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6171:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1437, "nodeType": "ExpressionStatement", "src": "6171:27:9"}, {"expression": {"id": 1444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1438, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "6208:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1441, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6210:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "6208:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1442, "indexExpression": {"id": 1440, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6220:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6208:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1443, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6234:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "6208:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1445, "nodeType": "ExpressionStatement", "src": "6208:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1446, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "6257:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1447, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6259:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "6257:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1449, "indexExpression": {"id": 1448, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6285:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6257:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1450, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6297:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "6257:57:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6318:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6257:62:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1459, "nodeType": "IfStatement", "src": "6253:126:9", "trueBody": {"expression": {"id": 1457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "6333:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1453, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "6340:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6342:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "6340:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1456, "indexExpression": {"id": 1455, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6368:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6340:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1458, "nodeType": "ExpressionStatement", "src": "6333:46:9"}}, {"eventCall": {"arguments": [{"expression": {"id": 1461, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6414:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1462, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6418:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "6414:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1463, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6426:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1464, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "6438:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6444:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "6438:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1466, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1389, "src": "6452:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1460, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1990, "src": "6394:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1467, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6394:62:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1468, "nodeType": "EmitStatement", "src": "6389:67:9"}]}, "functionSelector": "190d82e4", "id": 1470, "implemented": true, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "5796:17:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1391, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5855:8:9"}, "parameters": {"id": 1390, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1387, "mutability": "mutable", "name": "operatorId", "nameLocation": "5821:10:9", "nodeType": "VariableDeclaration", "scope": 1470, "src": "5814:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1386, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5814:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1389, "mutability": "mutable", "name": "fee", "nameLocation": "5841:3:9", "nodeType": "VariableDeclaration", "scope": 1470, "src": "5833:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1388, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5833:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5813:32:9"}, "returnParameters": {"id": 1392, "nodeType": "ParameterList", "parameters": [], "src": "5864:0:9"}, "scope": 1621, "src": "5787:676:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1934], "body": {"id": 1483, "nodeType": "Block", "src": "6556:62:9", "statements": [{"expression": {"arguments": [{"id": 1479, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1472, "src": "6592:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1480, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1474, "src": "6604:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1478, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1597, "src": "6566:25:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6566:45:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1482, "nodeType": "ExpressionStatement", "src": "6566:45:9"}]}, "functionSelector": "35f63767", "id": 1484, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "6478:24:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1476, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6547:8:9"}, "parameters": {"id": 1475, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1472, "mutability": "mutable", "name": "operatorId", "nameLocation": "6510:10:9", "nodeType": "VariableDeclaration", "scope": 1484, "src": "6503:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1471, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6503:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1474, "mutability": "mutable", "name": "amount", "nameLocation": "6530:6:9", "nodeType": "VariableDeclaration", "scope": 1484, "src": "6522:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1473, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6522:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6502:35:9"}, "returnParameters": {"id": 1477, "nodeType": "ParameterList", "parameters": [], "src": "6556:0:9"}, "scope": 1621, "src": "6469:149:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1940], "body": {"id": 1495, "nodeType": "Block", "src": "6698:57:9", "statements": [{"expression": {"arguments": [{"id": 1491, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "6734:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "30", "id": 1492, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6746:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1490, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1597, "src": "6708:25:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1493, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6708:40:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1494, "nodeType": "ExpressionStatement", "src": "6708:40:9"}]}, "functionSelector": "4bc93b64", "id": 1496, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "6633:27:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1488, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6689:8:9"}, "parameters": {"id": 1487, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1486, "mutability": "mutable", "name": "operatorId", "nameLocation": "6668:10:9", "nodeType": "VariableDeclaration", "scope": 1496, "src": "6661:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1485, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6661:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "6660:19:9"}, "returnParameters": {"id": 1489, "nodeType": "ParameterList", "parameters": [], "src": "6698:0:9"}, "scope": 1621, "src": "6624:131:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 1596, "nodeType": "Block", "src": "6864:753:9", "statements": [{"assignments": [1505], "declarations": [{"constant": false, "id": 1505, "mutability": "mutable", "name": "s", "nameLocation": "6894:1:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "6874:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1504, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1503, "name": "StorageData", "nameLocations": ["6874:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "6874:11:9"}, "referencedDeclaration": 2436, "src": "6874:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1509, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1506, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "6898:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6909:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "6898:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1508, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6898:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6874:41:9"}, {"assignments": [1512], "declarations": [{"constant": false, "id": 1512, "mutability": "mutable", "name": "operator", "nameLocation": "6941:8:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "6925:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1511, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1510, "name": "Operator", "nameLocations": ["6925:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "6925:8:9"}, "referencedDeclaration": 1650, "src": "6925:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1517, "initialValue": {"baseExpression": {"expression": {"id": 1513, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1505, "src": "6952:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1514, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6954:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "6952:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1516, "indexExpression": {"id": 1515, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "6964:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6952:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6925:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1518, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "6985:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1520, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6994:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "6985:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6985:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1522, "nodeType": "ExpressionStatement", "src": "6985:21:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1523, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7017:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7026:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "7017:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7017:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1527, "nodeType": "ExpressionStatement", "src": "7017:25:9"}, {"assignments": [1529], "declarations": [{"constant": false, "id": 1529, "mutability": "mutable", "name": "shrunkWithdrawn", "nameLocation": "7060:15:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "7053:22:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1528, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7053:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1530, "nodeType": "VariableDeclarationStatement", "src": "7053:22:9"}, {"assignments": [1532], "declarations": [{"constant": false, "id": 1532, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "7092:12:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "7085:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1531, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7085:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1536, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1533, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1500, "src": "7107:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7114:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "7107:13:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1535, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7107:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "7085:37:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1537, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1500, "src": "7137:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7147:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7137:11:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1540, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7152:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1541, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7161:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7152:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1542, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7170:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7152:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1543, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7180:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7152:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7137:44:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1553, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1500, "src": "7261:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7270:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7261:10:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1556, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7275:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1557, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7284:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7275:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1558, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7293:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7275:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 1559, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "7304:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7275:41:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7261:55:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1570, "nodeType": "Block", "src": "7379:53:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1567, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1692, "src": "7400:19:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1568, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7400:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1569, "nodeType": "RevertStatement", "src": "7393:28:9"}]}, "id": 1571, "nodeType": "IfStatement", "src": "7257:175:9", "trueBody": {"id": 1566, "nodeType": "Block", "src": "7318:55:9", "statements": [{"expression": {"id": 1564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1562, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7332:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1563, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "7350:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7332:30:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1565, "nodeType": "ExpressionStatement", "src": "7332:30:9"}]}}, "id": 1572, "nodeType": "IfStatement", "src": "7133:299:9", "trueBody": {"id": 1552, "nodeType": "Block", "src": "7183:68:9", "statements": [{"expression": {"id": 1550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1546, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7197:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"expression": {"id": 1547, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7215:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1548, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7224:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7215:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1549, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7233:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7215:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7197:43:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1551, "nodeType": "ExpressionStatement", "src": "7197:43:9"}]}}, {"expression": {"id": 1579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1573, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7442:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1576, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7451:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7442:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7460:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7442:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1578, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7471:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7442:44:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1580, "nodeType": "ExpressionStatement", "src": "7442:44:9"}, {"expression": {"id": 1587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1581, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1505, "src": "7497:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1584, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7499:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "7497:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1585, "indexExpression": {"id": 1583, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "7509:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7497:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1586, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7523:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "7497:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1588, "nodeType": "ExpressionStatement", "src": "7497:34:9"}, {"expression": {"arguments": [{"id": 1590, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "7573:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1591, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7585:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7601:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "7585:22:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1593, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7585:24:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1589, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1620, "src": "7542:30:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7542:68:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1595, "nodeType": "ExpressionStatement", "src": "7542:68:9"}]}, "id": 1597, "implemented": true, "kind": "function", "modifiers": [], "name": "_withdrawOperatorEarnings", "nameLocation": "6795:25:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1501, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1498, "mutability": "mutable", "name": "operatorId", "nameLocation": "6828:10:9", "nodeType": "VariableDeclaration", "scope": 1597, "src": "6821:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1497, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6821:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1500, "mutability": "mutable", "name": "amount", "nameLocation": "6848:6:9", "nodeType": "VariableDeclaration", "scope": 1597, "src": "6840:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1499, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6840:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6820:35:9"}, "returnParameters": {"id": 1502, "nodeType": "ParameterList", "parameters": [], "src": "6864:0:9"}, "scope": 1621, "src": "6786:831:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 1619, "nodeType": "Block", "src": "7706:124:9", "statements": [{"expression": {"arguments": [{"expression": {"id": 1607, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7740:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7744:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "7740:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1609, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "7752:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1604, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2136, "src": "7716:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2136_$", "typeString": "type(library CoreLib)"}}, "id": 1606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7724:15:9", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2047, "src": "7716:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7716:43:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1611, "nodeType": "ExpressionStatement", "src": "7716:43:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1613, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7792:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7796:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "7792:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1615, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1599, "src": "7804:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1616, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "7816:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1612, "name": "OperatorWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1998, "src": "7774:17:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256)"}}, "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7774:49:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1618, "nodeType": "EmitStatement", "src": "7769:54:9"}]}, "id": 1620, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOperatorBalanceUnsafe", "nameLocation": "7632:30:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1602, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1599, "mutability": "mutable", "name": "operatorId", "nameLocation": "7670:10:9", "nodeType": "VariableDeclaration", "scope": 1620, "src": "7663:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1598, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7663:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1601, "mutability": "mutable", "name": "amount", "nameLocation": "7690:6:9", "nodeType": "VariableDeclaration", "scope": 1620, "src": "7682:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1600, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7662:35:9"}, "returnParameters": {"id": 1603, "nodeType": "ParameterList", "parameters": [], "src": "7706:0:9"}, "scope": 1621, "src": "7623:207:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}], "scope": 1622, "src": "358:7474:9", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:7788:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2611]}, "id": 2612, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2535, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2536, "nodeType": "StructuredDocumentation", "src": "131:70:10", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2611, "linearizedBaseContracts": [2611], "name": "IERC20", "nameLocation": "212:6:10", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2537, "nodeType": "StructuredDocumentation", "src": "225:158:10", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2545, "name": "Transfer", "nameLocation": "394:8:10", "nodeType": "EventDefinition", "parameters": {"id": 2544, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2539, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:10", "nodeType": "VariableDeclaration", "scope": 2545, "src": "403:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2538, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2541, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:10", "nodeType": "VariableDeclaration", "scope": 2545, "src": "425:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2540, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2543, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:10", "nodeType": "VariableDeclaration", "scope": 2545, "src": "445:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2542, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:10"}, "src": "388:72:10"}, {"anonymous": false, "documentation": {"id": 2546, "nodeType": "StructuredDocumentation", "src": "466:148:10", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2554, "name": "Approval", "nameLocation": "625:8:10", "nodeType": "EventDefinition", "parameters": {"id": 2553, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2548, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:10", "nodeType": "VariableDeclaration", "scope": 2554, "src": "634:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2547, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2550, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:10", "nodeType": "VariableDeclaration", "scope": 2554, "src": "657:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2549, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2552, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:10", "nodeType": "VariableDeclaration", "scope": 2554, "src": "682:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2551, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:10"}, "src": "619:78:10"}, {"documentation": {"id": 2555, "nodeType": "StructuredDocumentation", "src": "703:66:10", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2560, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2556, "nodeType": "ParameterList", "parameters": [], "src": "794:2:10"}, "returnParameters": {"id": 2559, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2558, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2560, "src": "820:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2557, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:10"}, "scope": 2611, "src": "774:55:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2561, "nodeType": "StructuredDocumentation", "src": "835:72:10", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2568, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2564, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2563, "mutability": "mutable", "name": "account", "nameLocation": "939:7:10", "nodeType": "VariableDeclaration", "scope": 2568, "src": "931:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2562, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:10"}, "returnParameters": {"id": 2567, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2566, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2568, "src": "971:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2565, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:10"}, "scope": 2611, "src": "912:68:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2569, "nodeType": "StructuredDocumentation", "src": "986:202:10", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2578, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2574, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2571, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:10", "nodeType": "VariableDeclaration", "scope": 2578, "src": "1211:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2570, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2573, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:10", "nodeType": "VariableDeclaration", "scope": 2578, "src": "1223:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2572, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:10"}, "returnParameters": {"id": 2577, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2576, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2578, "src": "1257:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2575, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:10"}, "scope": 2611, "src": "1193:70:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2579, "nodeType": "StructuredDocumentation", "src": "1269:264:10", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2588, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2584, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2581, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:10", "nodeType": "VariableDeclaration", "scope": 2588, "src": "1557:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2580, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2583, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:10", "nodeType": "VariableDeclaration", "scope": 2588, "src": "1572:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2582, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:10"}, "returnParameters": {"id": 2587, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2586, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2588, "src": "1612:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2585, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:10"}, "scope": 2611, "src": "1538:83:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2589, "nodeType": "StructuredDocumentation", "src": "1627:642:10", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2598, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2594, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2591, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:10", "nodeType": "VariableDeclaration", "scope": 2598, "src": "2291:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2590, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2593, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:10", "nodeType": "VariableDeclaration", "scope": 2598, "src": "2308:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2592, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:10"}, "returnParameters": {"id": 2597, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2596, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2598, "src": "2342:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2595, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:10"}, "scope": 2611, "src": "2274:74:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2599, "nodeType": "StructuredDocumentation", "src": "2354:287:10", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2610, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2606, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2601, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:10", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2668:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2600, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2603, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:10", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2682:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2602, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2605, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:10", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2694:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2604, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:10"}, "returnParameters": {"id": 2609, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2608, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2728:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2607, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:10"}, "scope": 2611, "src": "2646:88:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2612, "src": "202:2534:10", "usedErrors": []}], "src": "106:2631:10"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [2533]}, "id": 2534, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2461, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2462, "nodeType": "StructuredDocumentation", "src": "112:311:11", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 2533, "linearizedBaseContracts": [2533], "name": "Counters", "nameLocation": "432:8:11", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2465, "members": [{"constant": false, "id": 2464, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:11", "nodeType": "VariableDeclaration", "scope": 2465, "src": "786:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2463, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:11", "nodeType": "StructDefinition", "scope": 2533, "src": "447:374:11", "visibility": "public"}, {"body": {"id": 2476, "nodeType": "Block", "src": "901:38:11", "statements": [{"expression": {"expression": {"id": 2473, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2468, "src": "918:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2474, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "918:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2472, "id": 2475, "nodeType": "Return", "src": "911:21:11"}]}, "id": 2477, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2469, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2468, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:11", "nodeType": "VariableDeclaration", "scope": 2477, "src": "844:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2467, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2466, "name": "Counter", "nameLocations": ["844:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "844:7:11"}, "referencedDeclaration": 2465, "src": "844:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:11"}, "returnParameters": {"id": 2472, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2471, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2477, "src": "892:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2470, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:11"}, "scope": 2533, "src": "827:112:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2490, "nodeType": "Block", "src": "998:70:11", "statements": [{"id": 2489, "nodeType": "UncheckedBlock", "src": "1008:54:11", "statements": [{"expression": {"id": 2487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2483, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2480, "src": "1032:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1032:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2486, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2488, "nodeType": "ExpressionStatement", "src": "1032:19:11"}]}]}, "id": 2491, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2481, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2480, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:11", "nodeType": "VariableDeclaration", "scope": 2491, "src": "964:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2479, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2478, "name": "Counter", "nameLocations": ["964:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "964:7:11"}, "referencedDeclaration": 2465, "src": "964:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:11"}, "returnParameters": {"id": 2482, "nodeType": "ParameterList", "parameters": [], "src": "998:0:11"}, "scope": 2533, "src": "945:123:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2518, "nodeType": "Block", "src": "1127:176:11", "statements": [{"assignments": [2498], "declarations": [{"constant": false, "id": 2498, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:11", "nodeType": "VariableDeclaration", "scope": 2518, "src": "1137:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2497, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2501, "initialValue": {"expression": {"id": 2499, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2494, "src": "1153:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1153:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:11"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2503, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "1185:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2504, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 2506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2508, "nodeType": "ExpressionStatement", "src": "1177:49:11"}, {"id": 2517, "nodeType": "UncheckedBlock", "src": "1236:61:11", "statements": [{"expression": {"id": 2515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2509, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2494, "src": "1260:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2511, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1260:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2512, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "1277:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2513, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2516, "nodeType": "ExpressionStatement", "src": "1260:26:11"}]}]}, "id": 2519, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2495, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2494, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:11", "nodeType": "VariableDeclaration", "scope": 2519, "src": "1093:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2493, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2492, "name": "Counter", "nameLocations": ["1093:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "1093:7:11"}, "referencedDeclaration": 2465, "src": "1093:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:11"}, "returnParameters": {"id": 2496, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:11"}, "scope": 2533, "src": "1074:229:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2531, "nodeType": "Block", "src": "1358:35:11", "statements": [{"expression": {"id": 2529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2525, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2522, "src": "1368:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1368:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2528, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2530, "nodeType": "ExpressionStatement", "src": "1368:18:11"}]}, "id": 2532, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2523, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2522, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:11", "nodeType": "VariableDeclaration", "scope": 2532, "src": "1324:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2521, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2520, "name": "Counter", "nameLocations": ["1324:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "1324:7:11"}, "referencedDeclaration": 2465, "src": "1324:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:11"}, "returnParameters": {"id": 2524, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:11"}, "scope": 2533, "src": "1309:84:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2534, "src": "424:971:11", "usedErrors": []}], "src": "87:1309:11"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol:Operators": {"srcmap": "148:4855:0:-:0;;;635:523;;;;;;;;;;342:11;659:13;;:36;;;;;;;;;;;;;;;;;;705:26;734:25;:23;;;;;:25;;:::i;:::-;705:54;;805:6;769:2;:33;;;:42;;;;;;;;;;;;;;;;;;855:37;863:19;855:35;;;;;:37;;:::i;:::-;821:2;:31;;;:71;;;;;;;;;;;;;;;;;;934:3;902:2;:29;;;:35;;;;;;;;;;;;;;;;;;977:6;947:2;:27;;;:36;;;;;;;;;;;;;;;;;;1023:6;993:2;:27;;;:36;;;;;;;;;;;;;;;;;;1067:4;1039:2;:25;;;:32;;;;;;;;;;;;;;;;;;1117:1;1101:13;;;;;;;;;;;:17;;;;:::i;:::-;1081:2;:17;;;:37;;;;;;;;;;;;;;;;;;1129:22;1149:1;1129:2;:19;;;;;;:22;;;;:::i;:::-;649:509;148:4855;;1672:184:7;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:8:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;;;:17;;:::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;552:272:5:-;638:21;656:2;638:17;;;:21;;:::i;:::-;691:26;714:2;691:22;;;:26;;:::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;;;;;:12;;:::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;488:169:8:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;;;:24;;:::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;1111:215::-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:101:12:-;43:7;83:18;76:5;72:30;61:41;;7:101;;;:::o;114:180::-;162:77;159:1;152:88;259:4;256:1;249:15;283:4;280:1;273:15;300:275;339:7;362:19;379:1;362:19;:::i;:::-;357:24;;395:19;412:1;395:19;:::i;:::-;390:24;;449:1;446;442:9;471:29;488:11;471:29;:::i;:::-;460:40;;532:11;523:7;520:24;510:58;;548:18;;:::i;:::-;510:58;347:228;300:275;;;;:::o;581:77::-;618:7;647:5;636:16;;581:77;;;:::o;664:194::-;704:4;724:20;742:1;724:20;:::i;:::-;719:25;;758:20;776:1;758:20;:::i;:::-;753:25;;802:1;799;795:9;787:17;;826:1;820:4;817:11;814:37;;;831:18;;:::i;:::-;814:37;664:194;;;;:::o;864:410::-;904:7;927:20;945:1;927:20;:::i;:::-;922:25;;961:20;979:1;961:20;:::i;:::-;956:25;;1016:1;1013;1009:9;1038:30;1056:11;1038:30;:::i;:::-;1027:41;;1217:1;1208:7;1204:15;1201:1;1198:22;1178:1;1171:9;1151:83;1128:139;;1247:18;;:::i;:::-;1128:139;912:362;864:410;;;;:::o;1280:169::-;1364:11;1398:6;1393:3;1386:19;1438:4;1433:3;1429:14;1414:29;;1280:169;;;;:::o;1455:168::-;1595:20;1591:1;1583:6;1579:14;1572:44;1455:168;:::o;1629:366::-;1771:3;1792:67;1856:2;1851:3;1792:67;:::i;:::-;1785:74;;1868:93;1957:3;1868:93;:::i;:::-;1986:2;1981:3;1977:12;1970:19;;1629:366;;;:::o;2001:419::-;2167:4;2205:2;2194:9;2190:18;2182:26;;2254:9;2248:4;2244:20;2240:1;2229:9;2225:17;2218:47;2282:131;2408:4;2282:131;:::i;:::-;2274:139;;2001:419;;;:::o;2426:180::-;2474:77;2471:1;2464:88;2571:4;2568:1;2561:15;2595:4;2592:1;2585:15;2612:185;2652:1;2669:20;2687:1;2669:20;:::i;:::-;2664:25;;2703:20;2721:1;2703:20;:::i;:::-;2698:25;;2742:1;2732:35;;2747:18;;:::i;:::-;2732:35;2789:1;2786;2782:9;2777:14;;2612:185;;;;:::o;2803:176::-;2835:1;2852:20;2870:1;2852:20;:::i;:::-;2847:25;;2886:20;2904:1;2886:20;:::i;:::-;2881:25;;2925:1;2915:35;;2930:18;;:::i;:::-;2915:35;2971:1;2968;2964:9;2959:14;;2803:176;;;;:::o;2985:172::-;3125:24;3121:1;3113:6;3109:14;3102:48;2985:172;:::o;3163:366::-;3305:3;3326:67;3390:2;3385:3;3326:67;:::i;:::-;3319:74;;3402:93;3491:3;3402:93;:::i;:::-;3520:2;3515:3;3511:12;3504:19;;3163:366;;;:::o;3535:419::-;3701:4;3739:2;3728:9;3724:18;3716:26;;3788:9;3782:4;3778:20;3774:1;3763:9;3759:17;3752:47;3816:131;3942:4;3816:131;:::i;:::-;3808:139;;3535:419;;;:::o;3960:205::-;3999:3;4018:19;4035:1;4018:19;:::i;:::-;4013:24;;4051:19;4068:1;4051:19;:::i;:::-;4046:24;;4093:1;4090;4086:9;4079:16;;4116:18;4111:3;4108:27;4105:53;;;4138:18;;:::i;:::-;4105:53;3960:205;;;;:::o;4171:208::-;4210:4;4230:19;4247:1;4230:19;:::i;:::-;4225:24;;4263:19;4280:1;4263:19;:::i;:::-;4258:24;;4306:1;4303;4299:9;4291:17;;4330:18;4324:4;4321:28;4318:54;;;4352:18;;:::i;:::-;4318:54;4171:208;;;;:::o;148:4855:0:-;;;;;;;", "srcmap-runtime": "148:4855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2535:525;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;778:988:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5787:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3463:349:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5376:405:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1892:423:0;;;:::i;:::-;;1772:799:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4623:378:0;;;:::i;:::-;;6469:149:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3242:162:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1538:348;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3066:170;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6624:131:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2321:208:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4379:991:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3818:518:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3069:1304:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2577:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4342:275:0;;;:::i;:::-;;2535:525;2639:5;:12;;;;2619:10;:33;;;;:::i;:::-;2606:46;;2663:25;2691:17;:15;:17::i;:::-;:27;;:39;2719:10;2691:39;;;;;;;;;;;;;;;2663:67;;2775:1;2748:8;:17;;:23;;;;;;;;;;;;:28;;;2740:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2816:10;2829:8;:12;;;;;;;;;;;;2816:25;;2852:20;402:6;2902:25;:23;:25::i;:::-;:48;;;;;;;;;;;;402:6;2883:67;;;;:::i;:::-;2876:3;:75;;;;:::i;:::-;2875:108;;;;:::i;:::-;2852:131;;2994:4;:23;;;3018:10;3030:22;:13;:20;;;:22::i;:::-;2994:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2596:464;;;2535:525;:::o;778:988:9:-;869:9;901:1;894:3;:8;;;;:38;;;;;450:11;906:26;;:3;:26;;;894:38;890:103;;;955:27;;;;;;;;;;;;;;890:103;1012:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1006:46;;:3;:46;;;1002:112;;;1075:28;;;;;;;;;;;;;;1002:112;1124:21;1148:17;:15;:17::i;:::-;1124:41;;1176:16;1205:9;;1195:20;;;;;;;:::i;:::-;;;;;;;;1176:39;;1257:1;1229;:14;;:24;1244:8;1229:24;;;;;;;;;;;;;;;;;;;;;:29;;;1225:81;;1267:39;;;;;;;;;;;;;;1225:81;1317:28;:1;:16;;:26;:28::i;:::-;1367:26;:1;:16;;:24;:26::i;:::-;1355:39;;1422:237;;;;;;;;1593:1;1422:237;;;;;;1613:3;1422:237;;;;;;1452:10;1422:237;;;;;;1643:5;1422:237;;;;;;1486:77;;;;;;;;1526:12;1486:77;;;;;;1548:1;1486:77;;;;;;1560:1;1486:77;;;;;1422:237;;;1404:1;:11;;:15;1416:2;1404:15;;;;;;;;;;;;;;;:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:2;1669:1;:14;;:24;1684:8;1669:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1732:10;1714:45;;1728:2;1714:45;;;1744:9;;1755:3;1714:45;;;;;;;;:::i;:::-;;;;;;;;880:886;;778:988;;;;;:::o;5787:676::-;5874:21;5898:17;:15;:17::i;:::-;5874:41;;5925:24;5952:1;:11;;:23;5964:10;5952:23;;;;;;;;;;;;;;;5925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5985:21;:8;:19;:21::i;:::-;6017:19;6039:12;:3;:10;:12::i;:::-;6017:34;;6081:8;:12;;;6065:28;;:12;:28;;;6061:64;;6102:23;;;;;;;;;;;;;;6061:64;6136:25;:8;:23;:25::i;:::-;6186:12;6171:8;:12;;:27;;;;;;;;;;;6234:8;6208:1;:11;;:23;6220:10;6208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6318:1;6257;:27;;:39;6285:10;6257:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;6253:126;;6340:1;:27;;:39;6368:10;6340:39;;;;;;;;;;;;;;;;6333:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6253:126;6426:10;6394:62;;6414:10;6394:62;;;6438:12;6452:3;6394:62;;;;;;;:::i;:::-;;;;;;;;5864:599;;;5787:676;;:::o;3463:349:0:-;3577:5;:12;;;;3557:10;:33;;;;:::i;:::-;3544:46;;3601:25;3629:17;:15;:17::i;:::-;:27;;:39;3657:10;3629:39;;;;;;;;;;;;;;;3601:67;;3711:1;3684:8;:17;;:23;;;;;;;;;;;;:28;;;3683:54;;;;;3717:8;:20;;;;;;;;;;;;3683:54;3679:126;;;3756:49;3772:10;3784:8;:20;;;;;;;;;;;;3756:49;;;;;;;:::i;:::-;;;;;;;;3679:126;3534:278;3463:349;:::o;5376:405:9:-;5458:21;5482:17;:15;:17::i;:::-;5458:41;;5509:36;:1;:11;;:23;5521:10;5509:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5621:1;5560;:27;;:39;5588:10;5560:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5556:90;;5631:15;;;;;;;;;;;;;;5556:90;5664:1;:27;;:39;5692:10;5664:39;;;;;;;;;;;;;;;;5657:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5763:10;5719:55;;5751:10;5719:55;;;;;;;;;;;;5448:333;5376:405;:::o;1892:423:0:-;1942:11;1956:13;;;;;;;;;;;1942:27;;1979:11;1993:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1979:54;;2044:22;2069:20;:18;:20::i;:::-;2044:45;;2099:10;2112:24;2125:4;2131;2112:12;:24::i;:::-;2099:37;;2151:4;:21;;;2173:9;2184:3;2151:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;2147:162;;2292:5;2285:13;;;;:::i;:::-;;2147:162;;;2231:5;2242:10;2231:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2189:75;2147:162;1932:383;;;;1892:423::o;1772:799:9:-;1843:21;1867:17;:15;:17::i;:::-;1843:41;;1894:24;1921:1;:11;;:23;1933:10;1921:23;;;;;;;;;;;;;;;1894:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:21;:8;:19;:21::i;:::-;1986:25;:8;:23;:25::i;:::-;2021:21;2045:8;:17;;;:25;;;2021:49;;2107:1;2081:8;:17;;;:23;;:27;;;;;;;;;;;2146:1;2118:8;:17;;;:25;;:29;;;;;;;;;;;2183:1;2157:8;:23;;:27;;;;;;;;;;;2209:1;2194:8;:12;;:16;;;;;;;;;;;2225:8;:20;;;2221:132;;;2284:5;2261:8;:20;;:28;;;;;;;;;;;2310:1;:20;;:32;2331:10;2310:32;;;;;;;;;;;;;;;;2303:39;;;;;;;;;;;2221:132;2388:8;2362:1;:11;;:23;2374:10;2362:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2428:1;2411:14;:18;;;2407:116;;;2445:67;2476:10;2488:23;:14;:21;;;:23::i;:::-;2445:30;:67::i;:::-;2407:116;2553:10;2537:27;;;;;;;;;;;;1833:738;;;1772:799;:::o;4623:378:0:-;4685:25;4713;:23;:25::i;:::-;4685:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4748:15;4778:9;4773:179;4793:5;:12;;;;4789:1;:16;4773:179;;;4826:24;4853:17;:15;:17::i;:::-;:27;;:37;4881:5;4887:1;4881:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4853:37;;;;;;;;;;;;;;;4826:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4916:8;:17;;;:25;;;4904:37;;;;;:::i;:::-;;;4812:140;4807:3;;;;;:::i;:::-;;;;4773:179;;;;4985:8;4968:25;;:2;:13;;;:25;;;4961:33;;;;:::i;:::-;;4675:326;;4623:378::o;6469:149:9:-;6566:45;6592:10;6604:6;6566:25;:45::i;:::-;6469:149;;:::o;3242:162:0:-;3342:5;:12;;;;3322:10;:33;;;;:::i;:::-;3309:46;;3366:4;:19;;;3386:10;3366:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3242:162;:::o;1538:348::-;1600:6;1632:3;1626:9;;:3;:9;;;1618:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;1678:18;1734:5;;1741:15;1717:40;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1707:51;;;;;;1699:60;;1678:81;;1769:5;;:7;;;;;;;;;:::i;:::-;;;;;;1786:18;1814:10;1786:39;;1876:3;1870:1;1864:3;1858;:9;;;;:::i;:::-;:13;;;;:::i;:::-;1843:11;:29;;;;:::i;:::-;1842:37;;;;:::i;:::-;1835:44;;;;1538:348;;;;:::o;3066:170::-;3170:5;:12;;;;3150:10;:33;;;;:::i;:::-;3137:46;;3194:4;:23;;;3218:10;3194:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3066:170;:::o;6624:131:9:-;6708:40;6734:10;6746:1;6708:25;:40::i;:::-;6624:131;:::o;2321:208:0:-;2448:5;:12;;;;2428:10;:33;;;;:::i;:::-;2415:46;;2472:4;:25;;;2498:10;2510:11;2472:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2321:208;;:::o;4379:991:9:-;4454:21;4478:17;:15;:17::i;:::-;4454:41;;4505:24;4532:1;:11;;:23;4544:10;4532:23;;;;;;;;;;;;;;;4505:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4565:21;:8;:19;:21::i;:::-;4597:48;4648:1;:27;;:39;4676:10;4648:39;;;;;;;;;;;;;;;4597:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4740:1;4702:16;:34;;;:39;;;4698:67;;4750:15;;;;;;;;;;;;;;4698:67;4811:16;:34;;;4793:52;;:15;:52;:106;;;;4867:16;:32;;;4849:50;;:15;:50;4793:106;4776:194;;;4931:28;;;;;;;;;;;;;;4776:194;5016:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4984:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4980:97;;;5065:12;;;;;;;;;;;;;;4980:97;5088:25;:8;:23;:25::i;:::-;5138:16;:20;;;5123:8;:12;;:35;;;;;;;;;;;5194:8;5168:1;:11;;:23;5180:10;5168:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:1;:27;;:39;5248:10;5220:39;;;;;;;;;;;;;;;;5213:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5307:10;5275:88;;5295:10;5275:88;;;5319:12;5333:29;:16;:20;;;:27;;;:29::i;:::-;5275:88;;;;;;;:::i;:::-;;;;;;;;4444:926;;;4379:991;:::o;3818:518:0:-;3953:1;3937:5;:12;;;;3930:24;;;;:::i;:::-;3916:10;:39;;;;:::i;:::-;3911:1;:45;;;;:::i;:::-;3898:58;;3966:25;3994:17;:15;:17::i;:::-;:27;;:39;4022:10;3994:39;;;;;;;;;;;;;;;3966:67;;4089:1;4062:8;:17;;:23;;;;;;;;;;;;:28;;;4061:126;;;;;4185:1;4108:17;:15;:17::i;:::-;:43;;:55;4152:10;4108:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;:78;;;;4061:126;4044:286;;;4217:102;4233:10;4245:17;:15;:17::i;:::-;:43;;:55;4289:10;4245:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;4217:102;;;;;;;:::i;:::-;;;;;;;;4044:286;3888:448;3818:518;:::o;3069:1304:9:-;3157:21;3181:17;:15;:17::i;:::-;3157:41;;3208:36;:1;:11;;:23;3220:10;3208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3255:26;3284:25;:23;:25::i;:::-;3255:54;;3331:1;3324:3;:8;;:38;;;;;450:11;3336:26;;:3;:26;3324:38;3320:62;;;3371:11;;;;;;;;;;;;;;3320:62;3402:2;:17;;;;;;;;;;;;3396:23;;:3;:23;3392:48;;;3428:12;;;;;;;;;;;;;;3392:48;3451:18;3472:1;:11;;:23;3484:10;3472:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3451:48;;3509:16;3528:12;:3;:10;:12::i;:::-;3509:31;;3570:9;3555:24;;:11;:24;;;3551:188;;3602:25;;;;;;;;;;;;;;3551:188;3661:1;3648:9;:14;;;;:34;;;;;3681:1;3666:11;:16;;;3648:34;3644:95;;;3705:23;;;;;;;;;;;;;;3644:95;3837:20;510:6;3895:2;:25;;;;;;;;;;;;510:6;3876:44;;;;:::i;:::-;3861:11;:60;;;;:::i;:::-;3860:81;;;;:::i;:::-;3837:104;;3968:13;3956:25;;:9;:25;;;3952:63;;;3990:25;;;;;;;;;;;;;;3952:63;4068:221;;;;;;;;4106:9;4068:221;;;;;;4155:2;:27;;;;;;;;;;;;4136:15;4129:53;;;;:::i;:::-;4068:221;;;;;;4252:2;:27;;;;;;;;;;;;4222:2;:27;;;;;;;;;;;;4203:15;4196:53;;;;:::i;:::-;:83;;;;:::i;:::-;4068:221;;;;;4026:1;:27;;:39;4054:10;4026:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4336:10;4304:62;;4324:10;4304:62;;;4348:12;4362:3;4304:62;;;;;;;:::i;:::-;;;;;;;;3147:1226;;;;;3069:1304;;:::o;2577:486::-;2666:21;2690:17;:15;:17::i;:::-;2666:41;;2717:36;:1;:11;;:23;2729:10;2717:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2791:1;2768:25;;:11;:25;;;2764:172;;2847:5;2809:1;:11;;:23;2821:10;2809:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2764:172;;;2921:4;2883:1;:11;;:23;2895:10;2883:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2764:172;2981:11;2946:1;:20;;:32;2967:10;2946:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3032:10;3007:49;;;3044:11;3007:49;;;;;;:::i;:::-;;;;;;;;2656:407;2577:486;;:::o;4342:275:0:-;4405:9;4400:211;4420:5;:12;;;;4416:1;:16;4400:211;;;4453:24;4480:17;:15;:17::i;:::-;:27;;:37;4508:5;4514:1;4508:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4480:37;;;;;;;;;;;;;;;4453:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4564:1;4538:8;:23;;;:27;;;:61;;;;4598:1;4569:8;:17;;;:25;;;:30;;;4538:61;4531:69;;;;:::i;:::-;;4439:172;4434:3;;;;;:::i;:::-;;;;4400:211;;;;4342:275::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:8:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;552:272:5:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;945:123:11:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;996:255:4:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;256:365::-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;1164:368:0:-;1212:12;1236:24;1273:2;1263:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1236:40;;1291:6;1286:195;1307:2;1303:1;:6;1286:195;;;1452:3;1409:5;;1416:15;1433:10;1445:1;1392:55;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1382:66;;;;;;1377:72;;:78;;;;:::i;:::-;1347:123;;1330:11;1342:1;1330:14;;;;;;;;:::i;:::-;;;;;:140;;;;;;;;;;;1311:3;;;;;:::i;:::-;;;;1286:195;;;;1490:5;;:7;;;;;;;;;:::i;:::-;;;;;;1514:11;1507:18;;;1164:368;:::o;7623:207:9:-;7716:43;7740:10;7752:6;7716:23;:43::i;:::-;7804:10;7774:49;;7792:10;7774:49;;;7816:6;7774:49;;;;;;:::i;:::-;;;;;;;;7623:207;;:::o;6786:831::-;6874:21;6898:17;:15;:17::i;:::-;6874:41;;6925:24;6952:1;:11;;:23;6964:10;6952:23;;;;;;;;;;;;;;;6925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6985:21;:8;:19;:21::i;:::-;7017:25;:8;:23;:25::i;:::-;7053:22;7085:19;7107:15;:6;:13;:15::i;:::-;7085:37;;7147:1;7137:6;:11;:44;;;;;7180:1;7152:8;:17;;;:25;;;:29;;;7137:44;7133:299;;;7215:8;:17;;;:25;;;7197:43;;7133:299;;;7270:1;7261:6;:10;:55;;;;;7304:12;7275:41;;:8;:17;;;:25;;;:41;;;;7261:55;7257:175;;;7350:12;7332:30;;7257:175;;;7400:21;;;;;;;;;;;;;;7257:175;7133:299;7471:15;7442:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7523:8;7497:1;:11;;:23;7509:10;7497:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7542:68;7573:10;7585:24;:15;:22;;;:24::i;:::-;7542:30;:68::i;:::-;6864:753;;;;6786:831;;:::o;488:169:8:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:101;370:7;410:18;403:5;399:30;388:41;;334:101;;;:::o;441:120::-;513:23;530:5;513:23;:::i;:::-;506:5;503:34;493:62;;551:1;548;541:12;493:62;441:120;:::o;567:137::-;612:5;650:6;637:20;628:29;;666:32;692:5;666:32;:::i;:::-;567:137;;;;:::o;710:327::-;768:6;817:2;805:9;796:7;792:23;788:32;785:119;;;823:79;;:::i;:::-;785:119;943:1;968:52;1012:7;1003:6;992:9;988:22;968:52;:::i;:::-;958:62;;914:116;710:327;;;;:::o;1043:117::-;1152:1;1149;1142:12;1166:117;1275:1;1272;1265:12;1289:117;1398:1;1395;1388:12;1425:552;1482:8;1492:6;1542:3;1535:4;1527:6;1523:17;1519:27;1509:122;;1550:79;;:::i;:::-;1509:122;1663:6;1650:20;1640:30;;1693:18;1685:6;1682:30;1679:117;;;1715:79;;:::i;:::-;1679:117;1829:4;1821:6;1817:17;1805:29;;1883:3;1875:4;1867:6;1863:17;1853:8;1849:32;1846:41;1843:128;;;1890:79;;:::i;:::-;1843:128;1425:552;;;;;:::o;1983:670::-;2061:6;2069;2077;2126:2;2114:9;2105:7;2101:23;2097:32;2094:119;;;2132:79;;:::i;:::-;2094:119;2280:1;2269:9;2265:17;2252:31;2310:18;2302:6;2299:30;2296:117;;;2332:79;;:::i;:::-;2296:117;2445:64;2501:7;2492:6;2481:9;2477:22;2445:64;:::i;:::-;2427:82;;;;2223:296;2558:2;2584:52;2628:7;2619:6;2608:9;2604:22;2584:52;:::i;:::-;2574:62;;2529:117;1983:670;;;;;:::o;2659:115::-;2744:23;2761:5;2744:23;:::i;:::-;2739:3;2732:36;2659:115;;:::o;2780:218::-;2871:4;2909:2;2898:9;2894:18;2886:26;;2922:69;2988:1;2977:9;2973:17;2964:6;2922:69;:::i;:::-;2780:218;;;;:::o;3004:77::-;3041:7;3070:5;3059:16;;3004:77;;;:::o;3087:122::-;3160:24;3178:5;3160:24;:::i;:::-;3153:5;3150:35;3140:63;;3199:1;3196;3189:12;3140:63;3087:122;:::o;3215:139::-;3261:5;3299:6;3286:20;3277:29;;3315:33;3342:5;3315:33;:::i;:::-;3215:139;;;;:::o;3360:472::-;3427:6;3435;3484:2;3472:9;3463:7;3459:23;3455:32;3452:119;;;3490:79;;:::i;:::-;3452:119;3610:1;3635:52;3679:7;3670:6;3659:9;3655:22;3635:52;:::i;:::-;3625:62;;3581:116;3736:2;3762:53;3807:7;3798:6;3787:9;3783:22;3762:53;:::i;:::-;3752:63;;3707:118;3360:472;;;;;:::o;3838:470::-;3904:6;3912;3961:2;3949:9;3940:7;3936:23;3932:32;3929:119;;;3967:79;;:::i;:::-;3929:119;4087:1;4112:52;4156:7;4147:6;4136:9;4132:22;4112:52;:::i;:::-;4102:62;;4058:116;4213:2;4239:52;4283:7;4274:6;4263:9;4259:22;4239:52;:::i;:::-;4229:62;;4184:117;3838:470;;;;;:::o;4314:126::-;4351:7;4391:42;4384:5;4380:54;4369:65;;4314:126;;;:::o;4446:96::-;4483:7;4512:24;4530:5;4512:24;:::i;:::-;4501:35;;4446:96;;;:::o;4548:122::-;4621:24;4639:5;4621:24;:::i;:::-;4614:5;4611:35;4601:63;;4660:1;4657;4650:12;4601:63;4548:122;:::o;4676:139::-;4722:5;4760:6;4747:20;4738:29;;4776:33;4803:5;4776:33;:::i;:::-;4676:139;;;;:::o;4821:472::-;4888:6;4896;4945:2;4933:9;4924:7;4920:23;4916:32;4913:119;;;4951:79;;:::i;:::-;4913:119;5071:1;5096:52;5140:7;5131:6;5120:9;5116:22;5096:52;:::i;:::-;5086:62;;5042:116;5197:2;5223:53;5268:7;5259:6;5248:9;5244:22;5223:53;:::i;:::-;5213:63;;5168:118;4821:472;;;;;:::o;5299:180::-;5347:77;5344:1;5337:88;5444:4;5441:1;5434:15;5468:4;5465:1;5458:15;5485:173;5516:1;5533:19;5550:1;5533:19;:::i;:::-;5528:24;;5566:19;5583:1;5566:19;:::i;:::-;5561:24;;5604:1;5594:35;;5609:18;;:::i;:::-;5594:35;5650:1;5647;5643:9;5638:14;;5485:173;;;;:::o;5664:169::-;5748:11;5782:6;5777:3;5770:19;5822:4;5817:3;5813:14;5798:29;;5664:169;;;;:::o;5839:174::-;5979:26;5975:1;5967:6;5963:14;5956:50;5839:174;:::o;6019:366::-;6161:3;6182:67;6246:2;6241:3;6182:67;:::i;:::-;6175:74;;6258:93;6347:3;6258:93;:::i;:::-;6376:2;6371:3;6367:12;6360:19;;6019:366;;;:::o;6391:419::-;6557:4;6595:2;6584:9;6580:18;6572:26;;6644:9;6638:4;6634:20;6630:1;6619:9;6615:17;6608:47;6672:131;6798:4;6672:131;:::i;:::-;6664:139;;6391:419;;;:::o;6816:180::-;6864:77;6861:1;6854:88;6961:4;6958:1;6951:15;6985:4;6982:1;6975:15;7002:205;7041:3;7060:19;7077:1;7060:19;:::i;:::-;7055:24;;7093:19;7110:1;7093:19;:::i;:::-;7088:24;;7135:1;7132;7128:9;7121:16;;7158:18;7153:3;7150:27;7147:53;;;7180:18;;:::i;:::-;7147:53;7002:205;;;;:::o;7213:275::-;7252:7;7275:19;7292:1;7275:19;:::i;:::-;7270:24;;7308:19;7325:1;7308:19;:::i;:::-;7303:24;;7362:1;7359;7355:9;7384:29;7401:11;7384:29;:::i;:::-;7373:40;;7445:11;7436:7;7433:24;7423:58;;7461:18;;:::i;:::-;7423:58;7260:228;7213:275;;;;:::o;7494:182::-;7533:1;7550:19;7567:1;7550:19;:::i;:::-;7545:24;;7583:19;7600:1;7583:19;:::i;:::-;7578:24;;7621:1;7611:35;;7626:18;;:::i;:::-;7611:35;7668:1;7665;7661:9;7656:14;;7494:182;;;;:::o;7682:118::-;7769:24;7787:5;7769:24;:::i;:::-;7764:3;7757:37;7682:118;;:::o;7806:328::-;7925:4;7963:2;7952:9;7948:18;7940:26;;7976:69;8042:1;8031:9;8027:17;8018:6;7976:69;:::i;:::-;8055:72;8123:2;8112:9;8108:18;8099:6;8055:72;:::i;:::-;7806:328;;;;;:::o;8140:147::-;8241:11;8278:3;8263:18;;8140:147;;;;:::o;8293:146::-;8390:6;8385:3;8380;8367:30;8431:1;8422:6;8417:3;8413:16;8406:27;8293:146;;;:::o;8467:327::-;8581:3;8602:88;8683:6;8678:3;8602:88;:::i;:::-;8595:95;;8700:56;8749:6;8744:3;8737:5;8700:56;:::i;:::-;8781:6;8776:3;8772:16;8765:23;;8467:327;;;;;:::o;8800:291::-;8940:3;8962:103;9061:3;9052:6;9044;8962:103;:::i;:::-;8955:110;;9082:3;9075:10;;8800:291;;;;;:::o;9097:168::-;9180:11;9214:6;9209:3;9202:19;9254:4;9249:3;9245:14;9230:29;;9097:168;;;;:::o;9271:102::-;9312:6;9363:2;9359:7;9354:2;9347:5;9343:14;9339:28;9329:38;;9271:102;;;:::o;9401:314::-;9497:3;9518:70;9581:6;9576:3;9518:70;:::i;:::-;9511:77;;9598:56;9647:6;9642:3;9635:5;9598:56;:::i;:::-;9679:29;9701:6;9679:29;:::i;:::-;9674:3;9670:39;9663:46;;9401:314;;;;;:::o;9721:60::-;9749:3;9770:5;9763:12;;9721:60;;;:::o;9787:140::-;9836:9;9869:52;9887:33;9896:23;9913:5;9896:23;:::i;:::-;9887:33;:::i;:::-;9869:52;:::i;:::-;9856:65;;9787:140;;;:::o;9933:129::-;10019:36;10049:5;10019:36;:::i;:::-;10014:3;10007:49;9933:129;;:::o;10068:437::-;10216:4;10254:2;10243:9;10239:18;10231:26;;10303:9;10297:4;10293:20;10289:1;10278:9;10274:17;10267:47;10331:86;10412:4;10403:6;10395;10331:86;:::i;:::-;10323:94;;10427:71;10494:2;10483:9;10479:18;10470:6;10427:71;:::i;:::-;10068:437;;;;;;:::o;10511:332::-;10632:4;10670:2;10659:9;10655:18;10647:26;;10683:71;10751:1;10740:9;10736:17;10727:6;10683:71;:::i;:::-;10764:72;10832:2;10821:9;10817:18;10808:6;10764:72;:::i;:::-;10511:332;;;;;:::o;10849:90::-;10883:7;10926:5;10919:13;10912:21;10901:32;;10849:90;;;:::o;10945:109::-;11026:21;11041:5;11026:21;:::i;:::-;11021:3;11014:34;10945:109;;:::o;11060:316::-;11173:4;11211:2;11200:9;11196:18;11188:26;;11224:69;11290:1;11279:9;11275:17;11266:6;11224:69;:::i;:::-;11303:66;11365:2;11354:9;11350:18;11341:6;11303:66;:::i;:::-;11060:316;;;;;:::o;11382:98::-;11433:6;11467:5;11461:12;11451:22;;11382:98;;;:::o;11486:246::-;11567:1;11577:113;11591:6;11588:1;11585:13;11577:113;;;11676:1;11671:3;11667:11;11661:18;11657:1;11652:3;11648:11;11641:39;11613:2;11610:1;11606:10;11601:15;;11577:113;;;11724:1;11715:6;11710:3;11706:16;11699:27;11548:184;11486:246;;;:::o;11738:373::-;11824:3;11852:38;11884:5;11852:38;:::i;:::-;11906:70;11969:6;11964:3;11906:70;:::i;:::-;11899:77;;11985:65;12043:6;12038:3;12031:4;12024:5;12020:16;11985:65;:::i;:::-;12075:29;12097:6;12075:29;:::i;:::-;12070:3;12066:39;12059:46;;11828:283;11738:373;;;;:::o;12117:415::-;12254:4;12292:2;12281:9;12277:18;12269:26;;12341:9;12335:4;12331:20;12327:1;12316:9;12312:17;12305:47;12369:76;12440:4;12431:6;12369:76;:::i;:::-;12361:84;;12455:70;12521:2;12510:9;12506:18;12497:6;12455:70;:::i;:::-;12117:415;;;;;:::o;12538:141::-;12594:5;12625:6;12619:13;12610:22;;12641:32;12667:5;12641:32;:::i;:::-;12538:141;;;;:::o;12685:349::-;12754:6;12803:2;12791:9;12782:7;12778:23;12774:32;12771:119;;;12809:79;;:::i;:::-;12771:119;12929:1;12954:63;13009:7;13000:6;12989:9;12985:22;12954:63;:::i;:::-;12944:73;;12900:127;12685:349;;;;:::o;13040:180::-;13088:77;13085:1;13078:88;13185:4;13182:1;13175:15;13209:4;13206:1;13199:15;13226:180;13274:77;13271:1;13264:88;13371:4;13368:1;13361:15;13395:4;13392:1;13385:15;13412:233;13451:3;13474:24;13492:5;13474:24;:::i;:::-;13465:33;;13520:66;13513:5;13510:77;13507:103;;13590:18;;:::i;:::-;13507:103;13637:1;13630:5;13626:13;13619:20;;13412:233;;;:::o;13651:178::-;13791:30;13787:1;13779:6;13775:14;13768:54;13651:178;:::o;13835:366::-;13977:3;13998:67;14062:2;14057:3;13998:67;:::i;:::-;13991:74;;14074:93;14163:3;14074:93;:::i;:::-;14192:2;14187:3;14183:12;14176:19;;13835:366;;;:::o;14207:419::-;14373:4;14411:2;14400:9;14396:18;14388:26;;14460:9;14454:4;14450:20;14446:1;14435:9;14431:17;14424:47;14488:131;14614:4;14488:131;:::i;:::-;14480:139;;14207:419;;;:::o;14632:79::-;14671:7;14700:5;14689:16;;14632:79;;;:::o;14717:157::-;14822:45;14842:24;14860:5;14842:24;:::i;:::-;14822:45;:::i;:::-;14817:3;14810:58;14717:157;;:::o;14880:397::-;15020:3;15035:75;15106:3;15097:6;15035:75;:::i;:::-;15135:2;15130:3;15126:12;15119:19;;15148:75;15219:3;15210:6;15148:75;:::i;:::-;15248:2;15243:3;15239:12;15232:19;;15268:3;15261:10;;14880:397;;;;;:::o;15283:208::-;15322:4;15342:19;15359:1;15342:19;:::i;:::-;15337:24;;15375:19;15392:1;15375:19;:::i;:::-;15370:24;;15418:1;15415;15411:9;15403:17;;15442:18;15436:4;15433:28;15430:54;;;15464:18;;:::i;:::-;15430:54;15283:208;;;;:::o;15497:118::-;15584:24;15602:5;15584:24;:::i;:::-;15579:3;15572:37;15497:118;;:::o;15621:328::-;15740:4;15778:2;15767:9;15763:18;15755:26;;15791:69;15857:1;15846:9;15842:17;15833:6;15791:69;:::i;:::-;15870:72;15938:2;15927:9;15923:18;15914:6;15870:72;:::i;:::-;15621:328;;;;;:::o;15955:324::-;16072:4;16110:2;16099:9;16095:18;16087:26;;16123:69;16189:1;16178:9;16174:17;16165:6;16123:69;:::i;:::-;16202:70;16268:2;16257:9;16253:18;16244:6;16202:70;:::i;:::-;15955:324;;;;;:::o;16285:222::-;16378:4;16416:2;16405:9;16401:18;16393:26;;16429:71;16497:1;16486:9;16482:17;16473:6;16429:71;:::i;:::-;16285:222;;;;:::o;16513:194::-;16553:4;16573:20;16591:1;16573:20;:::i;:::-;16568:25;;16607:20;16625:1;16607:20;:::i;:::-;16602:25;;16651:1;16648;16644:9;16636:17;;16675:1;16669:4;16666:11;16663:37;;;16680:18;;:::i;:::-;16663:37;16513:194;;;;:::o;16713:410::-;16753:7;16776:20;16794:1;16776:20;:::i;:::-;16771:25;;16810:20;16828:1;16810:20;:::i;:::-;16805:25;;16865:1;16862;16858:9;16887:30;16905:11;16887:30;:::i;:::-;16876:41;;17066:1;17057:7;17053:15;17050:1;17047:22;17027:1;17020:9;17000:83;16977:139;;17096:18;;:::i;:::-;16977:139;16761:362;16713:410;;;;:::o;17129:168::-;17269:20;17265:1;17257:6;17253:14;17246:44;17129:168;:::o;17303:366::-;17445:3;17466:67;17530:2;17525:3;17466:67;:::i;:::-;17459:74;;17542:93;17631:3;17542:93;:::i;:::-;17660:2;17655:3;17651:12;17644:19;;17303:366;;;:::o;17675:419::-;17841:4;17879:2;17868:9;17864:18;17856:26;;17928:9;17922:4;17918:20;17914:1;17903:9;17899:17;17892:47;17956:131;18082:4;17956:131;:::i;:::-;17948:139;;17675:419;;;:::o;18100:185::-;18140:1;18157:20;18175:1;18157:20;:::i;:::-;18152:25;;18191:20;18209:1;18191:20;:::i;:::-;18186:25;;18230:1;18220:35;;18235:18;;:::i;:::-;18220:35;18277:1;18274;18270:9;18265:14;;18100:185;;;;:::o;18291:93::-;18327:7;18367:10;18360:5;18356:22;18345:33;;18291:93;;;:::o;18390:200::-;18429:4;18449:19;18466:1;18449:19;:::i;:::-;18444:24;;18482:19;18499:1;18482:19;:::i;:::-;18477:24;;18525:1;18522;18518:9;18510:17;;18549:10;18543:4;18540:20;18537:46;;;18563:18;;:::i;:::-;18537:46;18390:200;;;;:::o;18596:180::-;18644:77;18641:1;18634:88;18741:4;18738:1;18731:15;18765:4;18762:1;18755:15;18782:94;18815:8;18863:5;18859:2;18855:14;18834:35;;18782:94;;;:::o;18882:::-;18921:7;18950:20;18964:5;18950:20;:::i;:::-;18939:31;;18882:94;;;:::o;18982:100::-;19021:7;19050:26;19070:5;19050:26;:::i;:::-;19039:37;;18982:100;;;:::o;19088:157::-;19193:45;19213:24;19231:5;19213:24;:::i;:::-;19193:45;:::i;:::-;19188:3;19181:58;19088:157;;:::o;19251:679::-;19447:3;19462:75;19533:3;19524:6;19462:75;:::i;:::-;19562:2;19557:3;19553:12;19546:19;;19575:75;19646:3;19637:6;19575:75;:::i;:::-;19675:2;19670:3;19666:12;19659:19;;19688:75;19759:3;19750:6;19688:75;:::i;:::-;19788:2;19783:3;19779:12;19772:19;;19801:75;19872:3;19863:6;19801:75;:::i;:::-;19901:2;19896:3;19892:12;19885:19;;19921:3;19914:10;;19251:679;;;;;;;:::o;19936:176::-;19968:1;19985:20;20003:1;19985:20;:::i;:::-;19980:25;;20019:20;20037:1;20019:20;:::i;:::-;20014:25;;20058:1;20048:35;;20063:18;;:::i;:::-;20048:35;20104:1;20101;20097:9;20092:14;;19936:176;;;;:::o;20118:222::-;20211:4;20249:2;20238:9;20234:18;20226:26;;20262:71;20330:1;20319:9;20315:17;20306:6;20262:71;:::i;:::-;20118:222;;;;:::o;20346:172::-;20486:24;20482:1;20474:6;20470:14;20463:48;20346:172;:::o;20524:366::-;20666:3;20687:67;20751:2;20746:3;20687:67;:::i;:::-;20680:74;;20763:93;20852:3;20763:93;:::i;:::-;20881:2;20876:3;20872:12;20865:19;;20524:366;;;:::o;20896:419::-;21062:4;21100:2;21089:9;21085:18;21077:26;;21149:9;21143:4;21139:20;21135:1;21124:9;21120:17;21113:47;21177:131;21303:4;21177:131;:::i;:::-;21169:139;;20896:419;;;:::o;21321:332::-;21442:4;21480:2;21469:9;21465:18;21457:26;;21493:71;21561:1;21550:9;21546:17;21537:6;21493:71;:::i;:::-;21574:72;21642:2;21631:9;21627:18;21618:6;21574:72;:::i;:::-;21321:332;;;;;:::o;21659:116::-;21729:21;21744:5;21729:21;:::i;:::-;21722:5;21719:32;21709:60;;21765:1;21762;21755:12;21709:60;21659:116;:::o;21781:137::-;21835:5;21866:6;21860:13;21851:22;;21882:30;21906:5;21882:30;:::i;:::-;21781:137;;;;:::o;21924:345::-;21991:6;22040:2;22028:9;22019:7;22015:23;22011:32;22008:119;;;22046:79;;:::i;:::-;22008:119;22166:1;22191:61;22244:7;22235:6;22224:9;22220:22;22191:61;:::i;:::-;22181:71;;22137:125;21924:345;;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isWhitelisted\",\"type\":\"bool\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"approvalBeginTime\",\"type\":\"uint64\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"_generateFee\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_operatorEarningsWithBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_removedOperatorBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNoFeeDeclared\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNotWhitelisted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"helper_createOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"helper_setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b506305f5e100600260006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600062000056620001ec60201b6200317c1760201c565b9050620347108160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550620000a4670de0b6b3a76400006200022a60201b620031b81760201c565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101f481600001600c6101000a81548163ffffffff021916908363ffffffff16021790555062093a808160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062093a808160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506103e88160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060028060009054906101000a900467ffffffffffffffff16620001a0919062000586565b8160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550620001e5600082620002b360201b620032321790919060201c565b5062000876565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c620002219190620005d6565b90508091505090565b6000629896806801000000000000000062000246919062000611565b8211156200028b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200028290620006bd565b60405180910390fd5b62989680620002a0836200036660201b60201c565b620002ac91906200070e565b9050919050565b620002c482620003c560201b60201c565b620002d5826200042660201b60201c565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555062000338816200022a60201b620031b81760201c565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008062989680836200037a919062000746565b14620003bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003b490620007ce565b60405180910390fd5b819050919050565b620003d681620004a160201b60201c565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643620004699190620005d6565b62000475919062000586565b8260000160189054906101000a900467ffffffffffffffff166200049a9190620007f0565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643620004ff919062000833565b6200050b919062000586565b62000517919062000586565b8260010160009054906101000a900467ffffffffffffffff166200053c9190620007f0565b9050919050565b600067ffffffffffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005938262000543565b9150620005a08362000543565b9250828202620005b08162000543565b9150808214620005c557620005c462000557565b5b5092915050565b6000819050919050565b6000620005e382620005cc565b9150620005f083620005cc565b92508282039050818111156200060b576200060a62000557565b5b92915050565b60006200061e82620005cc565b91506200062b83620005cc565b92508282026200063b81620005cc565b9150828204841483151762000655576200065462000557565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000620006a56012836200065c565b9150620006b2826200066d565b602082019050919050565b60006020820190508181036000830152620006d88162000696565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071b82620005cc565b91506200072883620005cc565b9250826200073b576200073a620006df565b5b828204905092915050565b60006200075382620005cc565b91506200076083620005cc565b925082620007735762000772620006df565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000620007b66016836200065c565b9150620007c3826200077e565b602082019050919050565b60006020820190508181036000830152620007e981620007a7565b9050919050565b6000620007fd8262000543565b91506200080a8362000543565b9250828201905067ffffffffffffffff8111156200082d576200082c62000557565b5b92915050565b6000620008408262000543565b91506200084d8362000543565b9250828203905067ffffffffffffffff81111562000870576200086f62000557565b5b92915050565b6149d880620008866000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806336058dc4116100ad5780638932cee0116100715780638932cee0146102b25780639d5ceb91146102ce578063b317c35f146102ea578063c90a7eab14610306578063e7780e001461032257610121565b806336058dc41461021257806341bfe2ba1461022e57806345a5605a1461025e5780634bc93b641461027a57806360e7474e1461029657610121565b806323d68a6d116100f457806323d68a6d146101aa578063249eaafa146101c65780632e168e0e146101d057806330eab391146101ec57806335f63767146101f657610121565b80630f5baea81461012657806310e7f40614610142578063190d82e41461017257806322ca0bed1461018e575b600080fd5b610140600480360381019061013b9190613d72565b61032c565b005b61015c60048036038101906101579190613e04565b6104be565b6040516101699190613e73565b60405180910390f35b61018c60048036038101906101879190613ec4565b6108e6565b005b6101a860048036038101906101a39190613d72565b610dcd565b005b6101c460048036038101906101bf9190613d72565b610ea3565b005b6101ce6111a5565b005b6101ea60048036038101906101e59190613d72565b6112eb565b005b6101f4611780565b005b610210600480360381019061020b9190613ec4565b611c3c565b005b61022c60048036038101906102279190613d72565b611c4a565b005b61024860048036038101906102439190613f04565b611ccb565b6040516102559190613e73565b60405180910390f35b61027860048036038101906102739190613d72565b611daa565b005b610294600480360381019061028f9190613d72565b611e2b565b005b6102b060048036038101906102ab9190613fa2565b611e39565b005b6102cc60048036038101906102c79190613d72565b611ebd565b005b6102e860048036038101906102e39190613d72565b6124fb565b005b61030460048036038101906102ff9190613ec4565b612663565b005b610320600480360381019061031b9190613fa2565b612c19565b005b61032a612f3b565b005b6000805490508161033d9190614011565b905060006103496132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16036103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca9061409f565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff16905060006127106103fd61317c565b60020160089054906101000a900467ffffffffffffffff1661271061042291906140ee565b8361042d919061412a565b6104379190614167565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f856104698467ffffffffffffffff16613304565b6040518363ffffffff1660e01b81526004016104869291906141a7565b600060405180830381600087803b1580156104a057600080fd5b505af11580156104b4573d6000803e3d6000fd5b5050505050505050565b6000808267ffffffffffffffff16141580156104f157506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610528576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053061317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff161115610595576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061059f6132c8565b9050600085856040516105b392919061420f565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161461062a576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063682600801613326565b6106428260080161333c565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516108d5939291906142b2565b60405180910390a350509392505050565b60006108f06132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610a9a8161334a565b6000610aa5846131b8565b9050816020015167ffffffffffffffff168167ffffffffffffffff1610610af8576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b01826133fe565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610d6b578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610dbe9291906142e4565b60405180910390a35050505050565b60008054905081610dde9190614011565b90506000610dea6132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015610e4f57508060010160009054906101000a900460ff165b15610e9f577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260010160009054906101000a900460ff16604051610e96929190614328565b60405180910390a15b5050565b6000610ead6132c8565b90506110528160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16036110d6576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000600260009054906101000a900467ffffffffffffffff16905060006111ca61317c565b60020160109054906101000a900467ffffffffffffffff16905060006111ee6134c6565b905060006111fc8484611ccb565b90503073ffffffffffffffffffffffffffffffffffffffff166310e7f40683836040518363ffffffff1660e01b81526004016112399291906143bf565b6020604051808303816000875af192505050801561127557506040513d601f19601f820116820180604052508101906112729190614404565b60015b61128d57600061128857611287614431565b5b6112e5565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b50505050565b60006112f56132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061149f8161334a565b6114a8816133fe565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156115995760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611743576117428461173d8367ffffffffffffffff16613304565b6135dd565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b600061178a61317c565b604051806101a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000805b600080549050811015611c0f576000611a0d6132c8565b6006016000808481548110611a2557611a24614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905080608001516040015183611bf991906140ee565b9250508080611c079061448f565b9150506119f6565b508067ffffffffffffffff168260c0015167ffffffffffffffff1614611c3857611c37614431565b5b5050565b611c468282613644565b5050565b60008054905081611c5b9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b8152600401611c969190613e73565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b5050505050565b60008267ffffffffffffffff168267ffffffffffffffff1611611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1a90614523565b60405180910390fd5b600060015442604051602001611d3a929190614564565b6040516020818303038152906040528051906020012060001c905060016000815480929190611d689061448f565b919050555060008190508460018686611d819190614590565b611d8b91906140ee565b82611d969190614011565b611da091906140ee565b9250505092915050565b60008054905081611dbb9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b8152600401611df69190613e73565b600060405180830381600087803b158015611e1057600080fd5b505af1158015611e24573d6000803e3d6000fd5b5050505050565b611e36816000613644565b50565b60008054905082611e4a9190614011565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611e879291906145db565b600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b505050505050565b6000611ec76132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506120718161334a565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603612187576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806121b05750806040015167ffffffffffffffff1642115b156121e7576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121ef61317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16612228826000015167ffffffffffffffff16613304565b1115612260576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612269826133fe565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef436124df856000015167ffffffffffffffff16613304565b6040516124ed9291906142e4565b60405180910390a350505050565b600160008054905061250d9190614590565b816125189190614011565b600161252491906140ee565b905060006125306132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff161480156125d95750600061258c6132c8565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b1561265f577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7826126086132c8565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff16604051612656929190614604565b60405180910390a15b5050565b600061266d6132c8565b90506128128160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600061281c61317c565b90506000831415801561283c57506305f5e10067ffffffffffffffff1683105b15612873576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156128cf576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff169050600061291f856131b8565b90508067ffffffffffffffff168267ffffffffffffffff160361296e576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015612993575060008267ffffffffffffffff16145b156129ca576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106129f591906140ee565b84612a00919061412a565b612a0a9190614167565b90508067ffffffffffffffff168267ffffffffffffffff161115612a5a576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642612a9991906140ee565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642612ae591906140ee565b612aef91906140ee565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051612c089291906142e4565b60405180910390a350505050505050565b6000612c236132c8565b9050612dc88160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e465760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612e8c565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051612f2e919061462d565b60405180910390a2505050565b60005b600080549050811015613179576000612f556132c8565b6006016000808481548110612f6d57612f6c614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506000816000015163ffffffff1611806131585750600081608001516040015167ffffffffffffffff16145b61316557613164614431565b5b5080806131719061448f565b915050612f3e565b50565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6131af9190614648565b90508091505090565b600062989680680100000000000000006131d2919061467c565b821115613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320b9061470a565b60405180910390fd5b6298968061322183613a83565b61322b919061472a565b9050919050565b61323b82613add565b61324482613b36565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061329a816131b8565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6132fb9190614648565b90508091505090565b6000629896808267ffffffffffffffff1661331f919061467c565b9050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603613392576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146133fb576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143613419919061476b565b63ffffffff16613429919061412a565b905080826080015160200181815161344191906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681613474919061412a565b826080015160400181815161348991906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60606000603067ffffffffffffffff8111156134e5576134e46147a3565b5b6040519080825280601f01601f1916602001820160405280156135175781602001600182028036833780820191505090505b50905060005b60308110156135bd57610100600154423384604051602001613542949392919061481a565b6040516020818303038152906040528051906020012060001c6135659190614868565b60f81b82828151811061357b5761357a614460565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806135b59061448f565b91505061351d565b50600160008154809291906135d19061448f565b91905055508091505090565b6135e73382613bab565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60836040516136389190614899565b60405180910390a35050565b600061364e6132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506137f88161334a565b613801816133fe565b60008061380d856131b8565b90506000851480156138315750600083608001516040015167ffffffffffffffff16115b156138465782608001516040015191506138b2565b60008511801561387257508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b1561387f578091506138b1565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516138c89190614590565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613a7b86613a768467ffffffffffffffff16613304565b6135dd565b505050505050565b6000806298968083613a959190614868565b14613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc90614900565b60405180910390fd5b819050919050565b613ae681613c8e565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643613b779190614648565b613b81919061412a565b8260000160189054906101000a900467ffffffffffffffff16613ba491906140ee565b9050919050565b613bb36132c8565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401613c11929190614920565b6020604051808303816000875af1158015613c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c549190614975565b613c8a576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643613cea9190614590565b613cf4919061412a565b613cfe919061412a565b8260010160009054906101000a900467ffffffffffffffff16613d2191906140ee565b9050919050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b613d4f81613d32565b8114613d5a57600080fd5b50565b600081359050613d6c81613d46565b92915050565b600060208284031215613d8857613d87613d28565b5b6000613d9684828501613d5d565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613dc457613dc3613d9f565b5b8235905067ffffffffffffffff811115613de157613de0613da4565b5b602083019150836001820283011115613dfd57613dfc613da9565b5b9250929050565b600080600060408486031215613e1d57613e1c613d28565b5b600084013567ffffffffffffffff811115613e3b57613e3a613d2d565b5b613e4786828701613dae565b93509350506020613e5a86828701613d5d565b9150509250925092565b613e6d81613d32565b82525050565b6000602082019050613e886000830184613e64565b92915050565b6000819050919050565b613ea181613e8e565b8114613eac57600080fd5b50565b600081359050613ebe81613e98565b92915050565b60008060408385031215613edb57613eda613d28565b5b6000613ee985828601613d5d565b9250506020613efa85828601613eaf565b9150509250929050565b60008060408385031215613f1b57613f1a613d28565b5b6000613f2985828601613d5d565b9250506020613f3a85828601613d5d565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f6f82613f44565b9050919050565b613f7f81613f64565b8114613f8a57600080fd5b50565b600081359050613f9c81613f76565b92915050565b60008060408385031215613fb957613fb8613d28565b5b6000613fc785828601613d5d565b9250506020613fd885828601613f8d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061401c82613d32565b915061402783613d32565b92508261403757614036613fe2565b5b828206905092915050565b600082825260208201905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b6000614089601883614042565b915061409482614053565b602082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140f982613d32565b915061410483613d32565b9250828201905067ffffffffffffffff811115614124576141236140bf565b5b92915050565b600061413582613d32565b915061414083613d32565b925082820261414e81613d32565b91508082146141605761415f6140bf565b5b5092915050565b600061417282613d32565b915061417d83613d32565b92508261418d5761418c613fe2565b5b828204905092915050565b6141a181613e8e565b82525050565b60006040820190506141bc6000830185613e64565b6141c96020830184614198565b9392505050565b600081905092915050565b82818337600083830152505050565b60006141f683856141d0565b93506142038385846141db565b82840190509392505050565b600061421c8284866141ea565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b60006142568385614228565b93506142638385846141db565b61426c83614239565b840190509392505050565b6000819050919050565b600061429c61429761429284613d32565b614277565b613e8e565b9050919050565b6142ac81614281565b82525050565b600060408201905081810360008301526142cd81858761424a565b90506142dc60208301846142a3565b949350505050565b60006040820190506142f96000830185614198565b6143066020830184614198565b9392505050565b60008115159050919050565b6143228161430d565b82525050565b600060408201905061433d6000830185613e64565b61434a6020830184614319565b9392505050565b600081519050919050565b60005b8381101561437a57808201518184015260208101905061435f565b60008484015250505050565b600061439182614351565b61439b8185614228565b93506143ab81856020860161435c565b6143b481614239565b840191505092915050565b600060408201905081810360008301526143d98185614386565b90506143e86020830184613e64565b9392505050565b6000815190506143fe81613d46565b92915050565b60006020828403121561441a57614419613d28565b5b6000614428848285016143ef565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061449a82613e8e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144cc576144cb6140bf565b5b600182019050919050565b7f4d6178206d7573742062652067726561746572207468616e206d696e00000000600082015250565b600061450d601c83614042565b9150614518826144d7565b602082019050919050565b6000602082019050818103600083015261453c81614500565b9050919050565b6000819050919050565b61455e61455982613e8e565b614543565b82525050565b6000614570828561454d565b602082019150614580828461454d565b6020820191508190509392505050565b600061459b82613d32565b91506145a683613d32565b9250828203905067ffffffffffffffff8111156145c6576145c56140bf565b5b92915050565b6145d581613f64565b82525050565b60006040820190506145f06000830185613e64565b6145fd60208301846145cc565b9392505050565b60006040820190506146196000830185613e64565b6146266020830184613e64565b9392505050565b600060208201905061464260008301846145cc565b92915050565b600061465382613e8e565b915061465e83613e8e565b9250828203905081811115614676576146756140bf565b5b92915050565b600061468782613e8e565b915061469283613e8e565b92508282026146a081613e8e565b915082820484148315176146b7576146b66140bf565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b60006146f4601283614042565b91506146ff826146be565b602082019050919050565b60006020820190508181036000830152614723816146e7565b9050919050565b600061473582613e8e565b915061474083613e8e565b9250826147505761474f613fe2565b5b828204905092915050565b600063ffffffff82169050919050565b60006147768261475b565b91506147818361475b565b9250828203905063ffffffff81111561479d5761479c6140bf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008160601b9050919050565b60006147ea826147d2565b9050919050565b60006147fc826147df565b9050919050565b61481461480f82613f64565b6147f1565b82525050565b6000614826828761454d565b602082019150614836828661454d565b6020820191506148468285614803565b601482019150614856828461454d565b60208201915081905095945050505050565b600061487382613e8e565b915061487e83613e8e565b92508261488e5761488d613fe2565b5b828206905092915050565b60006020820190506148ae6000830184614198565b92915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006148ea601683614042565b91506148f5826148b4565b602082019050919050565b60006020820190508181036000830152614919816148dd565b9050919050565b600060408201905061493560008301856145cc565b6149426020830184614198565b9392505050565b6149528161430d565b811461495d57600080fd5b50565b60008151905061496f81614949565b92915050565b60006020828403121561498b5761498a613d28565b5b600061499984828501614960565b9150509291505056fea2646970667358221220f99e8f4fa729e779d463679b9bed25a4a66fd70773bc3ab749b2f798b61147d264736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101215760003560e01c806336058dc4116100ad5780638932cee0116100715780638932cee0146102b25780639d5ceb91146102ce578063b317c35f146102ea578063c90a7eab14610306578063e7780e001461032257610121565b806336058dc41461021257806341bfe2ba1461022e57806345a5605a1461025e5780634bc93b641461027a57806360e7474e1461029657610121565b806323d68a6d116100f457806323d68a6d146101aa578063249eaafa146101c65780632e168e0e146101d057806330eab391146101ec57806335f63767146101f657610121565b80630f5baea81461012657806310e7f40614610142578063190d82e41461017257806322ca0bed1461018e575b600080fd5b610140600480360381019061013b9190613d72565b61032c565b005b61015c60048036038101906101579190613e04565b6104be565b6040516101699190613e73565b60405180910390f35b61018c60048036038101906101879190613ec4565b6108e6565b005b6101a860048036038101906101a39190613d72565b610dcd565b005b6101c460048036038101906101bf9190613d72565b610ea3565b005b6101ce6111a5565b005b6101ea60048036038101906101e59190613d72565b6112eb565b005b6101f4611780565b005b610210600480360381019061020b9190613ec4565b611c3c565b005b61022c60048036038101906102279190613d72565b611c4a565b005b61024860048036038101906102439190613f04565b611ccb565b6040516102559190613e73565b60405180910390f35b61027860048036038101906102739190613d72565b611daa565b005b610294600480360381019061028f9190613d72565b611e2b565b005b6102b060048036038101906102ab9190613fa2565b611e39565b005b6102cc60048036038101906102c79190613d72565b611ebd565b005b6102e860048036038101906102e39190613d72565b6124fb565b005b61030460048036038101906102ff9190613ec4565b612663565b005b610320600480360381019061031b9190613fa2565b612c19565b005b61032a612f3b565b005b6000805490508161033d9190614011565b905060006103496132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16036103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca9061409f565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff16905060006127106103fd61317c565b60020160089054906101000a900467ffffffffffffffff1661271061042291906140ee565b8361042d919061412a565b6104379190614167565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f856104698467ffffffffffffffff16613304565b6040518363ffffffff1660e01b81526004016104869291906141a7565b600060405180830381600087803b1580156104a057600080fd5b505af11580156104b4573d6000803e3d6000fd5b5050505050505050565b6000808267ffffffffffffffff16141580156104f157506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610528576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053061317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff161115610595576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061059f6132c8565b9050600085856040516105b392919061420f565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161461062a576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063682600801613326565b6106428260080161333c565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516108d5939291906142b2565b60405180910390a350509392505050565b60006108f06132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610a9a8161334a565b6000610aa5846131b8565b9050816020015167ffffffffffffffff168167ffffffffffffffff1610610af8576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b01826133fe565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610d6b578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610dbe9291906142e4565b60405180910390a35050505050565b60008054905081610dde9190614011565b90506000610dea6132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015610e4f57508060010160009054906101000a900460ff165b15610e9f577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260010160009054906101000a900460ff16604051610e96929190614328565b60405180910390a15b5050565b6000610ead6132c8565b90506110528160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16036110d6576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000600260009054906101000a900467ffffffffffffffff16905060006111ca61317c565b60020160109054906101000a900467ffffffffffffffff16905060006111ee6134c6565b905060006111fc8484611ccb565b90503073ffffffffffffffffffffffffffffffffffffffff166310e7f40683836040518363ffffffff1660e01b81526004016112399291906143bf565b6020604051808303816000875af192505050801561127557506040513d601f19601f820116820180604052508101906112729190614404565b60015b61128d57600061128857611287614431565b5b6112e5565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b50505050565b60006112f56132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061149f8161334a565b6114a8816133fe565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156115995760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611743576117428461173d8367ffffffffffffffff16613304565b6135dd565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b600061178a61317c565b604051806101a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000805b600080549050811015611c0f576000611a0d6132c8565b6006016000808481548110611a2557611a24614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905080608001516040015183611bf991906140ee565b9250508080611c079061448f565b9150506119f6565b508067ffffffffffffffff168260c0015167ffffffffffffffff1614611c3857611c37614431565b5b5050565b611c468282613644565b5050565b60008054905081611c5b9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b8152600401611c969190613e73565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b5050505050565b60008267ffffffffffffffff168267ffffffffffffffff1611611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1a90614523565b60405180910390fd5b600060015442604051602001611d3a929190614564565b6040516020818303038152906040528051906020012060001c905060016000815480929190611d689061448f565b919050555060008190508460018686611d819190614590565b611d8b91906140ee565b82611d969190614011565b611da091906140ee565b9250505092915050565b60008054905081611dbb9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b8152600401611df69190613e73565b600060405180830381600087803b158015611e1057600080fd5b505af1158015611e24573d6000803e3d6000fd5b5050505050565b611e36816000613644565b50565b60008054905082611e4a9190614011565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611e879291906145db565b600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b505050505050565b6000611ec76132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506120718161334a565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603612187576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806121b05750806040015167ffffffffffffffff1642115b156121e7576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121ef61317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16612228826000015167ffffffffffffffff16613304565b1115612260576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612269826133fe565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef436124df856000015167ffffffffffffffff16613304565b6040516124ed9291906142e4565b60405180910390a350505050565b600160008054905061250d9190614590565b816125189190614011565b600161252491906140ee565b905060006125306132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff161480156125d95750600061258c6132c8565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b1561265f577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7826126086132c8565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff16604051612656929190614604565b60405180910390a15b5050565b600061266d6132c8565b90506128128160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600061281c61317c565b90506000831415801561283c57506305f5e10067ffffffffffffffff1683105b15612873576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156128cf576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff169050600061291f856131b8565b90508067ffffffffffffffff168267ffffffffffffffff160361296e576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015612993575060008267ffffffffffffffff16145b156129ca576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106129f591906140ee565b84612a00919061412a565b612a0a9190614167565b90508067ffffffffffffffff168267ffffffffffffffff161115612a5a576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642612a9991906140ee565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642612ae591906140ee565b612aef91906140ee565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051612c089291906142e4565b60405180910390a350505050505050565b6000612c236132c8565b9050612dc88160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e465760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612e8c565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051612f2e919061462d565b60405180910390a2505050565b60005b600080549050811015613179576000612f556132c8565b6006016000808481548110612f6d57612f6c614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506000816000015163ffffffff1611806131585750600081608001516040015167ffffffffffffffff16145b61316557613164614431565b5b5080806131719061448f565b915050612f3e565b50565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6131af9190614648565b90508091505090565b600062989680680100000000000000006131d2919061467c565b821115613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320b9061470a565b60405180910390fd5b6298968061322183613a83565b61322b919061472a565b9050919050565b61323b82613add565b61324482613b36565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061329a816131b8565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6132fb9190614648565b90508091505090565b6000629896808267ffffffffffffffff1661331f919061467c565b9050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603613392576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146133fb576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143613419919061476b565b63ffffffff16613429919061412a565b905080826080015160200181815161344191906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681613474919061412a565b826080015160400181815161348991906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60606000603067ffffffffffffffff8111156134e5576134e46147a3565b5b6040519080825280601f01601f1916602001820160405280156135175781602001600182028036833780820191505090505b50905060005b60308110156135bd57610100600154423384604051602001613542949392919061481a565b6040516020818303038152906040528051906020012060001c6135659190614868565b60f81b82828151811061357b5761357a614460565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806135b59061448f565b91505061351d565b50600160008154809291906135d19061448f565b91905055508091505090565b6135e73382613bab565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60836040516136389190614899565b60405180910390a35050565b600061364e6132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506137f88161334a565b613801816133fe565b60008061380d856131b8565b90506000851480156138315750600083608001516040015167ffffffffffffffff16115b156138465782608001516040015191506138b2565b60008511801561387257508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b1561387f578091506138b1565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516138c89190614590565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613a7b86613a768467ffffffffffffffff16613304565b6135dd565b505050505050565b6000806298968083613a959190614868565b14613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc90614900565b60405180910390fd5b819050919050565b613ae681613c8e565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643613b779190614648565b613b81919061412a565b8260000160189054906101000a900467ffffffffffffffff16613ba491906140ee565b9050919050565b613bb36132c8565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401613c11929190614920565b6020604051808303816000875af1158015613c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c549190614975565b613c8a576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643613cea9190614590565b613cf4919061412a565b613cfe919061412a565b8260010160009054906101000a900467ffffffffffffffff16613d2191906140ee565b9050919050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b613d4f81613d32565b8114613d5a57600080fd5b50565b600081359050613d6c81613d46565b92915050565b600060208284031215613d8857613d87613d28565b5b6000613d9684828501613d5d565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613dc457613dc3613d9f565b5b8235905067ffffffffffffffff811115613de157613de0613da4565b5b602083019150836001820283011115613dfd57613dfc613da9565b5b9250929050565b600080600060408486031215613e1d57613e1c613d28565b5b600084013567ffffffffffffffff811115613e3b57613e3a613d2d565b5b613e4786828701613dae565b93509350506020613e5a86828701613d5d565b9150509250925092565b613e6d81613d32565b82525050565b6000602082019050613e886000830184613e64565b92915050565b6000819050919050565b613ea181613e8e565b8114613eac57600080fd5b50565b600081359050613ebe81613e98565b92915050565b60008060408385031215613edb57613eda613d28565b5b6000613ee985828601613d5d565b9250506020613efa85828601613eaf565b9150509250929050565b60008060408385031215613f1b57613f1a613d28565b5b6000613f2985828601613d5d565b9250506020613f3a85828601613d5d565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f6f82613f44565b9050919050565b613f7f81613f64565b8114613f8a57600080fd5b50565b600081359050613f9c81613f76565b92915050565b60008060408385031215613fb957613fb8613d28565b5b6000613fc785828601613d5d565b9250506020613fd885828601613f8d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061401c82613d32565b915061402783613d32565b92508261403757614036613fe2565b5b828206905092915050565b600082825260208201905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b6000614089601883614042565b915061409482614053565b602082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140f982613d32565b915061410483613d32565b9250828201905067ffffffffffffffff811115614124576141236140bf565b5b92915050565b600061413582613d32565b915061414083613d32565b925082820261414e81613d32565b91508082146141605761415f6140bf565b5b5092915050565b600061417282613d32565b915061417d83613d32565b92508261418d5761418c613fe2565b5b828204905092915050565b6141a181613e8e565b82525050565b60006040820190506141bc6000830185613e64565b6141c96020830184614198565b9392505050565b600081905092915050565b82818337600083830152505050565b60006141f683856141d0565b93506142038385846141db565b82840190509392505050565b600061421c8284866141ea565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b60006142568385614228565b93506142638385846141db565b61426c83614239565b840190509392505050565b6000819050919050565b600061429c61429761429284613d32565b614277565b613e8e565b9050919050565b6142ac81614281565b82525050565b600060408201905081810360008301526142cd81858761424a565b90506142dc60208301846142a3565b949350505050565b60006040820190506142f96000830185614198565b6143066020830184614198565b9392505050565b60008115159050919050565b6143228161430d565b82525050565b600060408201905061433d6000830185613e64565b61434a6020830184614319565b9392505050565b600081519050919050565b60005b8381101561437a57808201518184015260208101905061435f565b60008484015250505050565b600061439182614351565b61439b8185614228565b93506143ab81856020860161435c565b6143b481614239565b840191505092915050565b600060408201905081810360008301526143d98185614386565b90506143e86020830184613e64565b9392505050565b6000815190506143fe81613d46565b92915050565b60006020828403121561441a57614419613d28565b5b6000614428848285016143ef565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061449a82613e8e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144cc576144cb6140bf565b5b600182019050919050565b7f4d6178206d7573742062652067726561746572207468616e206d696e00000000600082015250565b600061450d601c83614042565b9150614518826144d7565b602082019050919050565b6000602082019050818103600083015261453c81614500565b9050919050565b6000819050919050565b61455e61455982613e8e565b614543565b82525050565b6000614570828561454d565b602082019150614580828461454d565b6020820191508190509392505050565b600061459b82613d32565b91506145a683613d32565b9250828203905067ffffffffffffffff8111156145c6576145c56140bf565b5b92915050565b6145d581613f64565b82525050565b60006040820190506145f06000830185613e64565b6145fd60208301846145cc565b9392505050565b60006040820190506146196000830185613e64565b6146266020830184613e64565b9392505050565b600060208201905061464260008301846145cc565b92915050565b600061465382613e8e565b915061465e83613e8e565b9250828203905081811115614676576146756140bf565b5b92915050565b600061468782613e8e565b915061469283613e8e565b92508282026146a081613e8e565b915082820484148315176146b7576146b66140bf565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b60006146f4601283614042565b91506146ff826146be565b602082019050919050565b60006020820190508181036000830152614723816146e7565b9050919050565b600061473582613e8e565b915061474083613e8e565b9250826147505761474f613fe2565b5b828204905092915050565b600063ffffffff82169050919050565b60006147768261475b565b91506147818361475b565b9250828203905063ffffffff81111561479d5761479c6140bf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008160601b9050919050565b60006147ea826147d2565b9050919050565b60006147fc826147df565b9050919050565b61481461480f82613f64565b6147f1565b82525050565b6000614826828761454d565b602082019150614836828661454d565b6020820191506148468285614803565b601482019150614856828461454d565b60208201915081905095945050505050565b600061487382613e8e565b915061487e83613e8e565b92508261488e5761488d613fe2565b5b828206905092915050565b60006020820190506148ae6000830184614198565b92915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006148ea601683614042565b91506148f5826148b4565b602082019050919050565b60006020820190508181036000830152614919816148dd565b9050919050565b600060408201905061493560008301856145cc565b6149426020830184614198565b9392505050565b6149528161430d565b811461495d57600080fd5b50565b60008151905061496f81614949565b92915050565b60006020828403121561498b5761498a613d28565b5b600061499984828501614960565b9150509291505056fea2646970667358221220f99e8f4fa729e779d463679b9bed25a4a66fd70773bc3ab749b2f798b61147d264736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint64)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint64)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol:ISSVOperators": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint64)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawOperatorEarnings(uint64,uint256)": {"notice": "Withdraws operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint64)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawOperatorEarnings(uint64,uint256)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "tokenAmount": "The amount of tokens to withdraw (SSV)"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:3:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol:OperatorLib": {"srcmap": "199:2119:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "199:2119:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol:SSVOperators": {"srcmap": "358:7474:9:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "358:7474:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:988;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5787:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5376:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1772:799;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6469:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6624:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4379:991;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3069:1304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2577:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;778:988;869:9;901:1;894:3;:8;;;;:38;;;;;450:11;906:26;;:3;:26;;;894:38;890:103;;;955:27;;;;;;;;;;;;;;890:103;1012:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1006:46;;:3;:46;;;1002:112;;;1075:28;;;;;;;;;;;;;;1002:112;1124:21;1148:17;:15;:17::i;:::-;1124:41;;1176:16;1205:9;;1195:20;;;;;;;:::i;:::-;;;;;;;;1176:39;;1257:1;1229;:14;;:24;1244:8;1229:24;;;;;;;;;;;;;;;;;;;;;:29;;;1225:81;;1267:39;;;;;;;;;;;;;;1225:81;1317:28;:1;:16;;:26;:28::i;:::-;1367:26;:1;:16;;:24;:26::i;:::-;1355:39;;1422:237;;;;;;;;1593:1;1422:237;;;;;;1613:3;1422:237;;;;;;1452:10;1422:237;;;;;;1643:5;1422:237;;;;;;1486:77;;;;;;;;1526:12;1486:77;;;;;;1548:1;1486:77;;;;;;1560:1;1486:77;;;;;1422:237;;;1404:1;:11;;:15;1416:2;1404:15;;;;;;;;;;;;;;;:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:2;1669:1;:14;;:24;1684:8;1669:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1732:10;1714:45;;1728:2;1714:45;;;1744:9;;1755:3;1714:45;;;;;;;;:::i;:::-;;;;;;;;880:886;;778:988;;;;;:::o;5787:676::-;5874:21;5898:17;:15;:17::i;:::-;5874:41;;5925:24;5952:1;:11;;:23;5964:10;5952:23;;;;;;;;;;;;;;;5925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5985:21;:8;:19;:21::i;:::-;6017:19;6039:12;:3;:10;:12::i;:::-;6017:34;;6081:8;:12;;;6065:28;;:12;:28;;;6061:64;;6102:23;;;;;;;;;;;;;;6061:64;6136:25;:8;:23;:25::i;:::-;6186:12;6171:8;:12;;:27;;;;;;;;;;;6234:8;6208:1;:11;;:23;6220:10;6208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6318:1;6257;:27;;:39;6285:10;6257:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;6253:126;;6340:1;:27;;:39;6368:10;6340:39;;;;;;;;;;;;;;;;6333:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6253:126;6426:10;6394:62;;6414:10;6394:62;;;6438:12;6452:3;6394:62;;;;;;;:::i;:::-;;;;;;;;5864:599;;;5787:676;;:::o;5376:405::-;5458:21;5482:17;:15;:17::i;:::-;5458:41;;5509:36;:1;:11;;:23;5521:10;5509:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5621:1;5560;:27;;:39;5588:10;5560:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5556:90;;5631:15;;;;;;;;;;;;;;5556:90;5664:1;:27;;:39;5692:10;5664:39;;;;;;;;;;;;;;;;5657:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5763:10;5719:55;;5751:10;5719:55;;;;;;;;;;;;5448:333;5376:405;:::o;1772:799::-;1843:21;1867:17;:15;:17::i;:::-;1843:41;;1894:24;1921:1;:11;;:23;1933:10;1921:23;;;;;;;;;;;;;;;1894:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:21;:8;:19;:21::i;:::-;1986:25;:8;:23;:25::i;:::-;2021:21;2045:8;:17;;;:25;;;2021:49;;2107:1;2081:8;:17;;;:23;;:27;;;;;;;;;;;2146:1;2118:8;:17;;;:25;;:29;;;;;;;;;;;2183:1;2157:8;:23;;:27;;;;;;;;;;;2209:1;2194:8;:12;;:16;;;;;;;;;;;2225:8;:20;;;2221:132;;;2284:5;2261:8;:20;;:28;;;;;;;;;;;2310:1;:20;;:32;2331:10;2310:32;;;;;;;;;;;;;;;;2303:39;;;;;;;;;;;2221:132;2388:8;2362:1;:11;;:23;2374:10;2362:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2428:1;2411:14;:18;;;2407:116;;;2445:67;2476:10;2488:23;:14;:21;;;:23::i;:::-;2445:30;:67::i;:::-;2407:116;2553:10;2537:27;;;;;;;;;;;;1833:738;;;1772:799;:::o;6469:149::-;6566:45;6592:10;6604:6;6566:25;:45::i;:::-;6469:149;;:::o;6624:131::-;6708:40;6734:10;6746:1;6708:25;:40::i;:::-;6624:131;:::o;4379:991::-;4454:21;4478:17;:15;:17::i;:::-;4454:41;;4505:24;4532:1;:11;;:23;4544:10;4532:23;;;;;;;;;;;;;;;4505:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4565:21;:8;:19;:21::i;:::-;4597:48;4648:1;:27;;:39;4676:10;4648:39;;;;;;;;;;;;;;;4597:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4740:1;4702:16;:34;;;:39;;;4698:67;;4750:15;;;;;;;;;;;;;;4698:67;4811:16;:34;;;4793:52;;:15;:52;:106;;;;4867:16;:32;;;4849:50;;:15;:50;4793:106;4776:194;;;4931:28;;;;;;;;;;;;;;4776:194;5016:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4984:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4980:97;;;5065:12;;;;;;;;;;;;;;4980:97;5088:25;:8;:23;:25::i;:::-;5138:16;:20;;;5123:8;:12;;:35;;;;;;;;;;;5194:8;5168:1;:11;;:23;5180:10;5168:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:1;:27;;:39;5248:10;5220:39;;;;;;;;;;;;;;;;5213:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5307:10;5275:88;;5295:10;5275:88;;;5319:12;5333:29;:16;:20;;;:27;;;:29::i;:::-;5275:88;;;;;;;:::i;:::-;;;;;;;;4444:926;;;4379:991;:::o;3069:1304::-;3157:21;3181:17;:15;:17::i;:::-;3157:41;;3208:36;:1;:11;;:23;3220:10;3208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3255:26;3284:25;:23;:25::i;:::-;3255:54;;3331:1;3324:3;:8;;:38;;;;;450:11;3336:26;;:3;:26;3324:38;3320:62;;;3371:11;;;;;;;;;;;;;;3320:62;3402:2;:17;;;;;;;;;;;;3396:23;;:3;:23;3392:48;;;3428:12;;;;;;;;;;;;;;3392:48;3451:18;3472:1;:11;;:23;3484:10;3472:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3451:48;;3509:16;3528:12;:3;:10;:12::i;:::-;3509:31;;3570:9;3555:24;;:11;:24;;;3551:188;;3602:25;;;;;;;;;;;;;;3551:188;3661:1;3648:9;:14;;;;:34;;;;;3681:1;3666:11;:16;;;3648:34;3644:95;;;3705:23;;;;;;;;;;;;;;3644:95;3837:20;510:6;3895:2;:25;;;;;;;;;;;;510:6;3876:44;;;;:::i;:::-;3861:11;:60;;;;:::i;:::-;3860:81;;;;:::i;:::-;3837:104;;3968:13;3956:25;;:9;:25;;;3952:63;;;3990:25;;;;;;;;;;;;;;3952:63;4068:221;;;;;;;;4106:9;4068:221;;;;;;4155:2;:27;;;;;;;;;;;;4136:15;4129:53;;;;:::i;:::-;4068:221;;;;;;4252:2;:27;;;;;;;;;;;;4222:2;:27;;;;;;;;;;;;4203:15;4196:53;;;;:::i;:::-;:83;;;;:::i;:::-;4068:221;;;;;4026:1;:27;;:39;4054:10;4026:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4336:10;4304:62;;4324:10;4304:62;;;4348:12;4362:3;4304:62;;;;;;;:::i;:::-;;;;;;;;3147:1226;;;;;3069:1304;;:::o;2577:486::-;2666:21;2690:17;:15;:17::i;:::-;2666:41;;2717:36;:1;:11;;:23;2729:10;2717:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2791:1;2768:25;;:11;:25;;;2764:172;;2847:5;2809:1;:11;;:23;2821:10;2809:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2764:172;;;2921:4;2883:1;:11;;:23;2895:10;2883:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2764:172;2981:11;2946:1;:20;;:32;2967:10;2946:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3032:10;3007:49;;;3044:11;3007:49;;;;;;:::i;:::-;;;;;;;;2656:407;2577:486;;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;945:123:11:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;996:255:4:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;276:206:8:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;7623:207:9:-;7716:43;7740:10;7752:6;7716:23;:43::i;:::-;7804:10;7774:49;;7792:10;7774:49;;;7816:6;7774:49;;;;;;:::i;:::-;;;;;;;;7623:207;;:::o;6786:831::-;6874:21;6898:17;:15;:17::i;:::-;6874:41;;6925:24;6952:1;:11;;:23;6964:10;6952:23;;;;;;;;;;;;;;;6925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6985:21;:8;:19;:21::i;:::-;7017:25;:8;:23;:25::i;:::-;7053:22;7085:19;7107:15;:6;:13;:15::i;:::-;7085:37;;7147:1;7137:6;:11;:44;;;;;7180:1;7152:8;:17;;;:25;;;:29;;;7137:44;7133:299;;;7215:8;:17;;;:25;;;7197:43;;7133:299;;;7270:1;7261:6;:10;:55;;;;;7304:12;7275:41;;:8;:17;;;:25;;;:41;;;;7261:55;7257:175;;;7350:12;7332:30;;7257:175;;;7400:21;;;;;;;;;;;;;;7257:175;7133:299;7471:15;7442:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7523:8;7497:1;:11;;:23;7509:10;7497:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7542:68;7573:10;7585:24;:15;:22;;;:24::i;:::-;7542:30;:68::i;:::-;6864:753;;;;6786:831;;:::o;488:169:8:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:101::-;1310:7;1350:18;1343:5;1339:30;1328:41;;1274:101;;;:::o;1381:120::-;1453:23;1470:5;1453:23;:::i;:::-;1446:5;1443:34;1433:62;;1491:1;1488;1481:12;1433:62;1381:120;:::o;1507:137::-;1552:5;1590:6;1577:20;1568:29;;1606:32;1632:5;1606:32;:::i;:::-;1507:137;;;;:::o;1650:670::-;1728:6;1736;1744;1793:2;1781:9;1772:7;1768:23;1764:32;1761:119;;;1799:79;;:::i;:::-;1761:119;1947:1;1936:9;1932:17;1919:31;1977:18;1969:6;1966:30;1963:117;;;1999:79;;:::i;:::-;1963:117;2112:64;2168:7;2159:6;2148:9;2144:22;2112:64;:::i;:::-;2094:82;;;;1890:296;2225:2;2251:52;2295:7;2286:6;2275:9;2271:22;2251:52;:::i;:::-;2241:62;;2196:117;1650:670;;;;;:::o;2326:115::-;2411:23;2428:5;2411:23;:::i;:::-;2406:3;2399:36;2326:115;;:::o;2447:218::-;2538:4;2576:2;2565:9;2561:18;2553:26;;2589:69;2655:1;2644:9;2640:17;2631:6;2589:69;:::i;:::-;2447:218;;;;:::o;2671:77::-;2708:7;2737:5;2726:16;;2671:77;;;:::o;2754:122::-;2827:24;2845:5;2827:24;:::i;:::-;2820:5;2817:35;2807:63;;2866:1;2863;2856:12;2807:63;2754:122;:::o;2882:139::-;2928:5;2966:6;2953:20;2944:29;;2982:33;3009:5;2982:33;:::i;:::-;2882:139;;;;:::o;3027:472::-;3094:6;3102;3151:2;3139:9;3130:7;3126:23;3122:32;3119:119;;;3157:79;;:::i;:::-;3119:119;3277:1;3302:52;3346:7;3337:6;3326:9;3322:22;3302:52;:::i;:::-;3292:62;;3248:116;3403:2;3429:53;3474:7;3465:6;3454:9;3450:22;3429:53;:::i;:::-;3419:63;;3374:118;3027:472;;;;;:::o;3505:327::-;3563:6;3612:2;3600:9;3591:7;3587:23;3583:32;3580:119;;;3618:79;;:::i;:::-;3580:119;3738:1;3763:52;3807:7;3798:6;3787:9;3783:22;3763:52;:::i;:::-;3753:62;;3709:116;3505:327;;;;:::o;3838:126::-;3875:7;3915:42;3908:5;3904:54;3893:65;;3838:126;;;:::o;3970:96::-;4007:7;4036:24;4054:5;4036:24;:::i;:::-;4025:35;;3970:96;;;:::o;4072:122::-;4145:24;4163:5;4145:24;:::i;:::-;4138:5;4135:35;4125:63;;4184:1;4181;4174:12;4125:63;4072:122;:::o;4200:139::-;4246:5;4284:6;4271:20;4262:29;;4300:33;4327:5;4300:33;:::i;:::-;4200:139;;;;:::o;4345:472::-;4412:6;4420;4469:2;4457:9;4448:7;4444:23;4440:32;4437:119;;;4475:79;;:::i;:::-;4437:119;4595:1;4620:52;4664:7;4655:6;4644:9;4640:22;4620:52;:::i;:::-;4610:62;;4566:116;4721:2;4747:53;4792:7;4783:6;4772:9;4768:22;4747:53;:::i;:::-;4737:63;;4692:118;4345:472;;;;;:::o;4823:147::-;4924:11;4961:3;4946:18;;4823:147;;;;:::o;4976:146::-;5073:6;5068:3;5063;5050:30;5114:1;5105:6;5100:3;5096:16;5089:27;4976:146;;;:::o;5150:327::-;5264:3;5285:88;5366:6;5361:3;5285:88;:::i;:::-;5278:95;;5383:56;5432:6;5427:3;5420:5;5383:56;:::i;:::-;5464:6;5459:3;5455:16;5448:23;;5150:327;;;;;:::o;5483:291::-;5623:3;5645:103;5744:3;5735:6;5727;5645:103;:::i;:::-;5638:110;;5765:3;5758:10;;5483:291;;;;;:::o;5780:168::-;5863:11;5897:6;5892:3;5885:19;5937:4;5932:3;5928:14;5913:29;;5780:168;;;;:::o;5954:102::-;5995:6;6046:2;6042:7;6037:2;6030:5;6026:14;6022:28;6012:38;;5954:102;;;:::o;6084:314::-;6180:3;6201:70;6264:6;6259:3;6201:70;:::i;:::-;6194:77;;6281:56;6330:6;6325:3;6318:5;6281:56;:::i;:::-;6362:29;6384:6;6362:29;:::i;:::-;6357:3;6353:39;6346:46;;6084:314;;;;;:::o;6404:60::-;6432:3;6453:5;6446:12;;6404:60;;;:::o;6470:140::-;6519:9;6552:52;6570:33;6579:23;6596:5;6579:23;:::i;:::-;6570:33;:::i;:::-;6552:52;:::i;:::-;6539:65;;6470:140;;;:::o;6616:129::-;6702:36;6732:5;6702:36;:::i;:::-;6697:3;6690:49;6616:129;;:::o;6751:437::-;6899:4;6937:2;6926:9;6922:18;6914:26;;6986:9;6980:4;6976:20;6972:1;6961:9;6957:17;6950:47;7014:86;7095:4;7086:6;7078;7014:86;:::i;:::-;7006:94;;7110:71;7177:2;7166:9;7162:18;7153:6;7110:71;:::i;:::-;6751:437;;;;;;:::o;7194:118::-;7281:24;7299:5;7281:24;:::i;:::-;7276:3;7269:37;7194:118;;:::o;7318:332::-;7439:4;7477:2;7466:9;7462:18;7454:26;;7490:71;7558:1;7547:9;7543:17;7534:6;7490:71;:::i;:::-;7571:72;7639:2;7628:9;7624:18;7615:6;7571:72;:::i;:::-;7318:332;;;;;:::o;7656:180::-;7704:77;7701:1;7694:88;7801:4;7798:1;7791:15;7825:4;7822:1;7815:15;7842:205;7881:3;7900:19;7917:1;7900:19;:::i;:::-;7895:24;;7933:19;7950:1;7933:19;:::i;:::-;7928:24;;7975:1;7972;7968:9;7961:16;;7998:18;7993:3;7990:27;7987:53;;;8020:18;;:::i;:::-;7987:53;7842:205;;;;:::o;8053:275::-;8092:7;8115:19;8132:1;8115:19;:::i;:::-;8110:24;;8148:19;8165:1;8148:19;:::i;:::-;8143:24;;8202:1;8199;8195:9;8224:29;8241:11;8224:29;:::i;:::-;8213:40;;8285:11;8276:7;8273:24;8263:58;;8301:18;;:::i;:::-;8263:58;8100:228;8053:275;;;;:::o;8334:180::-;8382:77;8379:1;8372:88;8479:4;8476:1;8469:15;8503:4;8500:1;8493:15;8520:182;8559:1;8576:19;8593:1;8576:19;:::i;:::-;8571:24;;8609:19;8626:1;8609:19;:::i;:::-;8604:24;;8647:1;8637:35;;8652:18;;:::i;:::-;8637:35;8694:1;8691;8687:9;8682:14;;8520:182;;;;:::o;8708:118::-;8795:24;8813:5;8795:24;:::i;:::-;8790:3;8783:37;8708:118;;:::o;8832:222::-;8925:4;8963:2;8952:9;8948:18;8940:26;;8976:71;9044:1;9033:9;9029:17;9020:6;8976:71;:::i;:::-;8832:222;;;;:::o;9060:194::-;9100:4;9120:20;9138:1;9120:20;:::i;:::-;9115:25;;9154:20;9172:1;9154:20;:::i;:::-;9149:25;;9198:1;9195;9191:9;9183:17;;9222:1;9216:4;9213:11;9210:37;;;9227:18;;:::i;:::-;9210:37;9060:194;;;;:::o;9260:410::-;9300:7;9323:20;9341:1;9323:20;:::i;:::-;9318:25;;9357:20;9375:1;9357:20;:::i;:::-;9352:25;;9412:1;9409;9405:9;9434:30;9452:11;9434:30;:::i;:::-;9423:41;;9613:1;9604:7;9600:15;9597:1;9594:22;9574:1;9567:9;9547:83;9524:139;;9643:18;;:::i;:::-;9524:139;9308:362;9260:410;;;;:::o;9676:169::-;9760:11;9794:6;9789:3;9782:19;9834:4;9829:3;9825:14;9810:29;;9676:169;;;;:::o;9851:168::-;9991:20;9987:1;9979:6;9975:14;9968:44;9851:168;:::o;10025:366::-;10167:3;10188:67;10252:2;10247:3;10188:67;:::i;:::-;10181:74;;10264:93;10353:3;10264:93;:::i;:::-;10382:2;10377:3;10373:12;10366:19;;10025:366;;;:::o;10397:419::-;10563:4;10601:2;10590:9;10586:18;10578:26;;10650:9;10644:4;10640:20;10636:1;10625:9;10621:17;10614:47;10678:131;10804:4;10678:131;:::i;:::-;10670:139;;10397:419;;;:::o;10822:185::-;10862:1;10879:20;10897:1;10879:20;:::i;:::-;10874:25;;10913:20;10931:1;10913:20;:::i;:::-;10908:25;;10952:1;10942:35;;10957:18;;:::i;:::-;10942:35;10999:1;10996;10992:9;10987:14;;10822:185;;;;:::o;11013:93::-;11049:7;11089:10;11082:5;11078:22;11067:33;;11013:93;;;:::o;11112:200::-;11151:4;11171:19;11188:1;11171:19;:::i;:::-;11166:24;;11204:19;11221:1;11204:19;:::i;:::-;11199:24;;11247:1;11244;11240:9;11232:17;;11271:10;11265:4;11262:20;11259:46;;;11285:18;;:::i;:::-;11259:46;11112:200;;;;:::o;11318:222::-;11411:4;11449:2;11438:9;11434:18;11426:26;;11462:71;11530:1;11519:9;11515:17;11506:6;11462:71;:::i;:::-;11318:222;;;;:::o;11546:208::-;11585:4;11605:19;11622:1;11605:19;:::i;:::-;11600:24;;11638:19;11655:1;11638:19;:::i;:::-;11633:24;;11681:1;11678;11674:9;11666:17;;11705:18;11699:4;11696:28;11693:54;;;11727:18;;:::i;:::-;11693:54;11546:208;;;;:::o;11760:176::-;11792:1;11809:20;11827:1;11809:20;:::i;:::-;11804:25;;11843:20;11861:1;11843:20;:::i;:::-;11838:25;;11882:1;11872:35;;11887:18;;:::i;:::-;11872:35;11928:1;11925;11921:9;11916:14;;11760:176;;;;:::o;11942:172::-;12082:24;12078:1;12070:6;12066:14;12059:48;11942:172;:::o;12120:366::-;12262:3;12283:67;12347:2;12342:3;12283:67;:::i;:::-;12276:74;;12359:93;12448:3;12359:93;:::i;:::-;12477:2;12472:3;12468:12;12461:19;;12120:366;;;:::o;12492:419::-;12658:4;12696:2;12685:9;12681:18;12673:26;;12745:9;12739:4;12735:20;12731:1;12720:9;12716:17;12709:47;12773:131;12899:4;12773:131;:::i;:::-;12765:139;;12492:419;;;:::o;12917:332::-;13038:4;13076:2;13065:9;13061:18;13053:26;;13089:71;13157:1;13146:9;13142:17;13133:6;13089:71;:::i;:::-;13170:72;13238:2;13227:9;13223:18;13214:6;13170:72;:::i;:::-;12917:332;;;;;:::o;13255:90::-;13289:7;13332:5;13325:13;13318:21;13307:32;;13255:90;;;:::o;13351:116::-;13421:21;13436:5;13421:21;:::i;:::-;13414:5;13411:32;13401:60;;13457:1;13454;13447:12;13401:60;13351:116;:::o;13473:137::-;13527:5;13558:6;13552:13;13543:22;;13574:30;13598:5;13574:30;:::i;:::-;13473:137;;;;:::o;13616:345::-;13683:6;13732:2;13720:9;13711:7;13707:23;13703:32;13700:119;;;13738:79;;:::i;:::-;13700:119;13858:1;13883:61;13936:7;13927:6;13916:9;13912:22;13883:61;:::i;:::-;13873:71;;13829:125;13616:345;;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50613233806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806335f637671161006657806335f637671461011c5780634bc93b64146101385780638932cee014610154578063b317c35f14610170578063c90a7eab1461018c57610093565b806310e7f40614610098578063190d82e4146100c857806323d68a6d146100e45780632e168e0e14610100575b600080fd5b6100b260048036038101906100ad9190612ac6565b6101a8565b6040516100bf9190612b35565b60405180910390f35b6100e260048036038101906100dd9190612b86565b6105d0565b005b6100fe60048036038101906100f99190612bc6565b610ab7565b005b61011a60048036038101906101159190612bc6565b610db9565b005b61013660048036038101906101319190612b86565b61124e565b005b610152600480360381019061014d9190612bc6565b61125c565b005b61016e60048036038101906101699190612bc6565b61126a565b005b61018a60048036038101906101859190612b86565b6118a8565b005b6101a660048036038101906101a19190612c51565b611e5e565b005b6000808267ffffffffffffffff16141580156101db57506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610212576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61021a612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16111561027f576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006102896121bc565b90506000858560405161029d929190612cd0565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610314576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610320826008016121f8565b61032c8260080161220e565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516105bf93929190612d73565b60405180910390a350509392505050565b60006105da6121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506107848161221c565b600061078f846122d0565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106107e2576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107eb8261234a565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610a55578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610aa8929190612db4565b60405180910390a35050505050565b6000610ac16121bc565b9050610c668160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610cea576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000610dc36121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610f6d8161221c565b610f768161234a565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156110675760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611211576112108461120b8367ffffffffffffffff16612412565b612434565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b611258828261249b565b5050565b61126781600061249b565b50565b60006112746121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061141e8161221c565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611534576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff1642108061155d5750806040015167ffffffffffffffff1642115b15611594576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159c612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166115d5826000015167ffffffffffffffff16612412565b111561160d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116168261234a565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4361188c856000015167ffffffffffffffff16612412565b60405161189a929190612db4565b60405180910390a350505050565b60006118b26121bc565b9050611a578160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b6000611a61612180565b905060008314158015611a8157506305f5e10067ffffffffffffffff1683105b15611ab8576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16831115611b14576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff1690506000611b64856122d0565b90508067ffffffffffffffff168267ffffffffffffffff1603611bb3576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015611bd8575060008267ffffffffffffffff16145b15611c0f576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff16612710611c3a9190612e0c565b84611c459190612e48565b611c4f9190612eb4565b90508067ffffffffffffffff168267ffffffffffffffff161115611c9f576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642611cde9190612e0c565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642611d2a9190612e0c565b611d349190612e0c565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051611e4d929190612db4565b60405180910390a350505050505050565b6000611e686121bc565b905061200d8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361208b5760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506120d1565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe836040516121739190612ef4565b60405180910390a2505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6121b39190612f0f565b90508091505090565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6121ef9190612f0f565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603612264576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146122cd576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122ea9190612f43565b82111561232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390612fe2565b60405180910390fd5b62989680612339836128da565b6123439190613002565b9050919050565b60008160200151826080015160000151436123659190613043565b63ffffffff166123759190612e48565b905080826080015160200181815161238d9190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816123c09190612e48565b82608001516040018181516123d59190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff1661242d9190612f43565b9050919050565b61243e3382612934565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d608360405161248f919061307b565b60405180910390a35050565b60006124a56121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061264f8161221c565b6126588161234a565b600080612664856122d0565b90506000851480156126885750600083608001516040015167ffffffffffffffff16115b1561269d578260800151604001519150612709565b6000851180156126c957508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156126d657809150612708565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b81836080015160400181815161271f9190613096565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050506128d2866128cd8467ffffffffffffffff16612412565b612434565b505050505050565b60008062989680836128ec91906130d2565b1461292c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129239061314f565b60405180910390fd5b819050919050565b61293c6121bc565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161299a92919061316f565b6020604051808303816000875af11580156129b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dd91906131d0565b612a13576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612a4657612a45612a21565b5b8235905067ffffffffffffffff811115612a6357612a62612a26565b5b602083019150836001820283011115612a7f57612a7e612a2b565b5b9250929050565b600067ffffffffffffffff82169050919050565b612aa381612a86565b8114612aae57600080fd5b50565b600081359050612ac081612a9a565b92915050565b600080600060408486031215612adf57612ade612a17565b5b600084013567ffffffffffffffff811115612afd57612afc612a1c565b5b612b0986828701612a30565b93509350506020612b1c86828701612ab1565b9150509250925092565b612b2f81612a86565b82525050565b6000602082019050612b4a6000830184612b26565b92915050565b6000819050919050565b612b6381612b50565b8114612b6e57600080fd5b50565b600081359050612b8081612b5a565b92915050565b60008060408385031215612b9d57612b9c612a17565b5b6000612bab85828601612ab1565b9250506020612bbc85828601612b71565b9150509250929050565b600060208284031215612bdc57612bdb612a17565b5b6000612bea84828501612ab1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1e82612bf3565b9050919050565b612c2e81612c13565b8114612c3957600080fd5b50565b600081359050612c4b81612c25565b92915050565b60008060408385031215612c6857612c67612a17565b5b6000612c7685828601612ab1565b9250506020612c8785828601612c3c565b9150509250929050565b600081905092915050565b82818337600083830152505050565b6000612cb78385612c91565b9350612cc4838584612c9c565b82840190509392505050565b6000612cdd828486612cab565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612d178385612ce9565b9350612d24838584612c9c565b612d2d83612cfa565b840190509392505050565b6000819050919050565b6000612d5d612d58612d5384612a86565b612d38565b612b50565b9050919050565b612d6d81612d42565b82525050565b60006040820190508181036000830152612d8e818587612d0b565b9050612d9d6020830184612d64565b949350505050565b612dae81612b50565b82525050565b6000604082019050612dc96000830185612da5565b612dd66020830184612da5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e1782612a86565b9150612e2283612a86565b9250828201905067ffffffffffffffff811115612e4257612e41612ddd565b5b92915050565b6000612e5382612a86565b9150612e5e83612a86565b9250828202612e6c81612a86565b9150808214612e7e57612e7d612ddd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ebf82612a86565b9150612eca83612a86565b925082612eda57612ed9612e85565b5b828204905092915050565b612eee81612c13565b82525050565b6000602082019050612f096000830184612ee5565b92915050565b6000612f1a82612b50565b9150612f2583612b50565b9250828203905081811115612f3d57612f3c612ddd565b5b92915050565b6000612f4e82612b50565b9150612f5983612b50565b9250828202612f6781612b50565b91508282048414831517612f7e57612f7d612ddd565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612fcc601283612f85565b9150612fd782612f96565b602082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b600061300d82612b50565b915061301883612b50565b92508261302857613027612e85565b5b828204905092915050565b600063ffffffff82169050919050565b600061304e82613033565b915061305983613033565b9250828203905063ffffffff81111561307557613074612ddd565b5b92915050565b60006020820190506130906000830184612da5565b92915050565b60006130a182612a86565b91506130ac83612a86565b9250828203905067ffffffffffffffff8111156130cc576130cb612ddd565b5b92915050565b60006130dd82612b50565b91506130e883612b50565b9250826130f8576130f7612e85565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613139601683612f85565b915061314482613103565b602082019050919050565b600060208201905081810360008301526131688161312c565b9050919050565b60006040820190506131846000830185612ee5565b6131916020830184612da5565b9392505050565b60008115159050919050565b6131ad81613198565b81146131b857600080fd5b50565b6000815190506131ca816131a4565b92915050565b6000602082840312156131e6576131e5612a17565b5b60006131f4848285016131bb565b9150509291505056fea264697066735822122066d8bc92064d89f28ce67216679f3246745bd94456f910a35ebbbc7892a256d964736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c806335f637671161006657806335f637671461011c5780634bc93b64146101385780638932cee014610154578063b317c35f14610170578063c90a7eab1461018c57610093565b806310e7f40614610098578063190d82e4146100c857806323d68a6d146100e45780632e168e0e14610100575b600080fd5b6100b260048036038101906100ad9190612ac6565b6101a8565b6040516100bf9190612b35565b60405180910390f35b6100e260048036038101906100dd9190612b86565b6105d0565b005b6100fe60048036038101906100f99190612bc6565b610ab7565b005b61011a60048036038101906101159190612bc6565b610db9565b005b61013660048036038101906101319190612b86565b61124e565b005b610152600480360381019061014d9190612bc6565b61125c565b005b61016e60048036038101906101699190612bc6565b61126a565b005b61018a60048036038101906101859190612b86565b6118a8565b005b6101a660048036038101906101a19190612c51565b611e5e565b005b6000808267ffffffffffffffff16141580156101db57506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610212576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61021a612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16111561027f576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006102896121bc565b90506000858560405161029d929190612cd0565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610314576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610320826008016121f8565b61032c8260080161220e565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516105bf93929190612d73565b60405180910390a350509392505050565b60006105da6121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506107848161221c565b600061078f846122d0565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106107e2576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107eb8261234a565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610a55578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610aa8929190612db4565b60405180910390a35050505050565b6000610ac16121bc565b9050610c668160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610cea576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000610dc36121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610f6d8161221c565b610f768161234a565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156110675760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611211576112108461120b8367ffffffffffffffff16612412565b612434565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b611258828261249b565b5050565b61126781600061249b565b50565b60006112746121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061141e8161221c565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611534576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff1642108061155d5750806040015167ffffffffffffffff1642115b15611594576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159c612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166115d5826000015167ffffffffffffffff16612412565b111561160d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116168261234a565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4361188c856000015167ffffffffffffffff16612412565b60405161189a929190612db4565b60405180910390a350505050565b60006118b26121bc565b9050611a578160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b6000611a61612180565b905060008314158015611a8157506305f5e10067ffffffffffffffff1683105b15611ab8576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16831115611b14576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff1690506000611b64856122d0565b90508067ffffffffffffffff168267ffffffffffffffff1603611bb3576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015611bd8575060008267ffffffffffffffff16145b15611c0f576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff16612710611c3a9190612e0c565b84611c459190612e48565b611c4f9190612eb4565b90508067ffffffffffffffff168267ffffffffffffffff161115611c9f576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642611cde9190612e0c565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642611d2a9190612e0c565b611d349190612e0c565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051611e4d929190612db4565b60405180910390a350505050505050565b6000611e686121bc565b905061200d8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361208b5760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506120d1565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe836040516121739190612ef4565b60405180910390a2505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6121b39190612f0f565b90508091505090565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6121ef9190612f0f565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603612264576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146122cd576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122ea9190612f43565b82111561232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390612fe2565b60405180910390fd5b62989680612339836128da565b6123439190613002565b9050919050565b60008160200151826080015160000151436123659190613043565b63ffffffff166123759190612e48565b905080826080015160200181815161238d9190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816123c09190612e48565b82608001516040018181516123d59190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff1661242d9190612f43565b9050919050565b61243e3382612934565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d608360405161248f919061307b565b60405180910390a35050565b60006124a56121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061264f8161221c565b6126588161234a565b600080612664856122d0565b90506000851480156126885750600083608001516040015167ffffffffffffffff16115b1561269d578260800151604001519150612709565b6000851180156126c957508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156126d657809150612708565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b81836080015160400181815161271f9190613096565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050506128d2866128cd8467ffffffffffffffff16612412565b612434565b505050505050565b60008062989680836128ec91906130d2565b1461292c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129239061314f565b60405180910390fd5b819050919050565b61293c6121bc565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161299a92919061316f565b6020604051808303816000875af11580156129b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dd91906131d0565b612a13576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612a4657612a45612a21565b5b8235905067ffffffffffffffff811115612a6357612a62612a26565b5b602083019150836001820283011115612a7f57612a7e612a2b565b5b9250929050565b600067ffffffffffffffff82169050919050565b612aa381612a86565b8114612aae57600080fd5b50565b600081359050612ac081612a9a565b92915050565b600080600060408486031215612adf57612ade612a17565b5b600084013567ffffffffffffffff811115612afd57612afc612a1c565b5b612b0986828701612a30565b93509350506020612b1c86828701612ab1565b9150509250925092565b612b2f81612a86565b82525050565b6000602082019050612b4a6000830184612b26565b92915050565b6000819050919050565b612b6381612b50565b8114612b6e57600080fd5b50565b600081359050612b8081612b5a565b92915050565b60008060408385031215612b9d57612b9c612a17565b5b6000612bab85828601612ab1565b9250506020612bbc85828601612b71565b9150509250929050565b600060208284031215612bdc57612bdb612a17565b5b6000612bea84828501612ab1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1e82612bf3565b9050919050565b612c2e81612c13565b8114612c3957600080fd5b50565b600081359050612c4b81612c25565b92915050565b60008060408385031215612c6857612c67612a17565b5b6000612c7685828601612ab1565b9250506020612c8785828601612c3c565b9150509250929050565b600081905092915050565b82818337600083830152505050565b6000612cb78385612c91565b9350612cc4838584612c9c565b82840190509392505050565b6000612cdd828486612cab565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612d178385612ce9565b9350612d24838584612c9c565b612d2d83612cfa565b840190509392505050565b6000819050919050565b6000612d5d612d58612d5384612a86565b612d38565b612b50565b9050919050565b612d6d81612d42565b82525050565b60006040820190508181036000830152612d8e818587612d0b565b9050612d9d6020830184612d64565b949350505050565b612dae81612b50565b82525050565b6000604082019050612dc96000830185612da5565b612dd66020830184612da5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e1782612a86565b9150612e2283612a86565b9250828201905067ffffffffffffffff811115612e4257612e41612ddd565b5b92915050565b6000612e5382612a86565b9150612e5e83612a86565b9250828202612e6c81612a86565b9150808214612e7e57612e7d612ddd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ebf82612a86565b9150612eca83612a86565b925082612eda57612ed9612e85565b5b828204905092915050565b612eee81612c13565b82525050565b6000602082019050612f096000830184612ee5565b92915050565b6000612f1a82612b50565b9150612f2583612b50565b9250828203905081811115612f3d57612f3c612ddd565b5b92915050565b6000612f4e82612b50565b9150612f5983612b50565b9250828202612f6781612b50565b91508282048414831517612f7e57612f7d612ddd565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612fcc601283612f85565b9150612fd782612f96565b602082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b600061300d82612b50565b915061301883612b50565b92508261302857613027612e85565b5b828204905092915050565b600063ffffffff82169050919050565b600061304e82613033565b915061305983613033565b9250828203905063ffffffff81111561307557613074612ddd565b5b92915050565b60006020820190506130906000830184612da5565b92915050565b60006130a182612a86565b91506130ac83612a86565b9250828203905067ffffffffffffffff8111156130cc576130cb612ddd565b5b92915050565b60006130dd82612b50565b91506130e883612b50565b9250826130f8576130f7612e85565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613139601683612f85565b915061314482613103565b602082019050919050565b600060208201905081810360008301526131688161312c565b9050919050565b60006040820190506131846000830185612ee5565b6131916020830184612da5565b9392505050565b60008115159050919050565b6131ad81613198565b81146131b857600080fd5b50565b6000815190506131ca816131a4565b92915050565b6000602082840312156131e6576131e5612a17565b5b60006131f4848285016131bb565b9150509291505056fea264697066735822122066d8bc92064d89f28ce67216679f3246745bd94456f910a35ebbbc7892a256d964736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint64)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint64)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:11:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file