{ "abi": [ { "inputs": [ { "components": [ { "internalType": "contract IERC20", "name": "arpa", "type": "address" }, { "internalType": "uint256", "name": "initialMaxPoolSize", "type": "uint256" }, { "internalType": "uint256", "name": "initialMaxCommunityStakeAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minCommunityStakeAmount", "type": "uint256" }, { "internalType": "uint256", "name": "operatorStakeAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minInitialOperatorCount", "type": "uint256" }, { "internalType": "uint256", "name": "minRewardDuration", "type": "uint256" }, { "internalType": "uint256", "name": "delegationRateDenominator", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeFreezingDuration", "type": "uint256" } ], "internalType": "struct Staking.PoolConstructorParams", "name": "params", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessForbidden", "type": "error" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "CastError", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "remainingAmount", "type": "uint256" } ], "name": "ExcessiveStakeAmount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ExistingLockedStakeFound", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "name": "ExistingStakeFound", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "name": "FrozenPrincipalDoesNotExist", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "currentOperatorsCount", "type": "uint256" }, { "internalType": "uint256", "name": "minInitialOperatorsCount", "type": "uint256" } ], "name": "InadequateInitialOperatorsCount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "currentLockedStakingAmount", "type": "uint256" } ], "name": "InadequateOperatorLockedStakingAmount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "currentStakingAmount", "type": "uint256" } ], "name": "InadequateStakingAmount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "requiredAmount", "type": "uint256" } ], "name": "InsufficientStakeAmount", "type": "error" }, { "inputs": [], "name": "InvalidDelegationRate", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "maxStakeAmount", "type": "uint256" } ], "name": "InvalidMaxStakeAmount", "type": "error" }, { "inputs": [], "name": "InvalidMigrationTarget", "type": "error" }, { "inputs": [], "name": "InvalidMinCommunityStakeAmount", "type": "error" }, { "inputs": [], "name": "InvalidOperatorStakeAmount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "maxPoolSize", "type": "uint256" } ], "name": "InvalidPoolSize", "type": "error" }, { "inputs": [ { "internalType": "bool", "name": "currentStatus", "type": "bool" }, { "internalType": "bool", "name": "requiredStatus", "type": "bool" } ], "name": "InvalidPoolStatus", "type": "error" }, { "inputs": [], "name": "InvalidZeroAddress", "type": "error" }, { "inputs": [], "name": "NoBaseRewardForOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "OperatorAlreadyExists", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "OperatorDoesNotExist", "type": "error" }, { "inputs": [], "name": "RewardDurationTooShort", "type": "error" }, { "inputs": [], "name": "SenderNotController", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "name": "StakeNotFound", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "UnstakeOperatorWithPartialAmount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "name": "UnstakeWithZeroAmount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "controller", "type": "address" } ], "name": "ControllerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "DelegationRewardSlashed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "principal", "type": "uint256" } ], "name": "FrozenPrincipalClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newLock", "type": "uint256" } ], "name": "Locked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "principal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "baseReward", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "delegationReward", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "Migrated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "migrationTarget", "type": "address" } ], "name": "MigrationTargetAccepted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "migrationTarget", "type": "address" } ], "name": "MigrationTargetProposed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "baseReward", "type": "uint256" } ], "name": "RewardClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newStake", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalStake", "type": "uint256" } ], "name": "Staked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "arpaAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "initialMaxPoolSize", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "initialMaxCommunityStakeAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "minCommunityStakeAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "operatorStakeAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "minInitialOperatorCount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "minRewardDuration", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "delegationRateDenominator", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "unstakeFreezingDuration", "type": "uint256" } ], "name": "StakingConfigSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newUnlock", "type": "uint256" } ], "name": "Unlocked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "principal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "baseReward", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "delegationReward", "type": "uint256" } ], "name": "Unstaked", "type": "event" }, { "inputs": [], "name": "acceptMigrationTarget", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "operators", "type": "address[]" } ], "name": "addOperators", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "rewardDuration", "type": "uint256" } ], "name": "addReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimFrozenPrincipal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "emergencyPause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "emergencyUnpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getArpaToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAvailableReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "name": "getBaseReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "getClaimablePrincipalAmount", "outputs": [ { "internalType": "uint256", "name": "claimingPrincipal", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCommunityStakerLimits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCommunityStakersCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getController", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDelegatesCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDelegationRateDenominator", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "name": "getDelegationReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "name": "getFrozenPrincipal", "outputs": [ { "internalType": "uint96[]", "name": "amounts", "type": "uint96[]" }, { "internalType": "uint256[]", "name": "unlockTimestamps", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "name": "getLockedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMaxPoolSize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMigrationTarget", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOperatorLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRewardRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRewardTimestamps", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "name": "getStake", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTotalCommunityStakedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTotalDelegatedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTotalFrozenAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTotalStakedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "name": "isOperator", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "lock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "migrate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "rewardDuration", "type": "uint256" } ], "name": "newReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "migrationTarget", "type": "address" } ], "name": "proposeMigrationTarget", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "controller", "type": "address" } ], "name": "setController", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "maxPoolSize", "type": "uint256" }, { "internalType": "uint256", "name": "maxCommunityStakeAmount", "type": "uint256" } ], "name": "setPoolConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "slashDelegationReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "rewardDuration", "type": "uint256" } ], "name": "start", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "typeAndVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "unlock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "unstake", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": { "object": "0x6101606040523480156200001257600080fd5b50604051620048d0380380620048d08339810160408190526200003591620004b8565b62000040336200023f565b6000805460ff60a01b1916905580516001600160a01b0316620000765760405163f6b2911f60e01b815260040160405180910390fd5b8060e001516000036200009c5760405163027953ef60e61b815260040160405180910390fd5b60008160e0015164e8d4a51000620000b591906200053f565b1115620000d55760405163027953ef60e61b815260040160405180910390fd5b8060800151600003620000fa5760405162c4149d60e51b815260040160405180910390fd5b806040015181606001511115620001245760405163941b857f60e01b815260040160405180910390fd5b620001498160200151826040015160016200028f60201b62001f1c179092919060201c565b80516001600160a01b031660809081528101805160a090815260608301805160c0908152918401805160e09081529285018051610100908152938601805161012052938601805161014052865160208801516040808a015196519851955194519751935190517f4f5fcb1be0e233ce19a3f1a9544465fca14a2e18bb8d6e4821ed92d0c6272b3a996200023099949893979396909593949093909290916001600160a01b03999099168952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b60405180910390a15062000562565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60028301546001600160601b0316821015620002c657604051630f9e1c3b60e11b8152600481018390526024015b60405180910390fd5b60028301546c0100000000000000000000000090046001600160601b0316811015620003095760405163bc91aa3360e01b815260048101829052602401620002bd565b60028301546001600160601b031682146200038a5762000334826200043460201b620020831760201c565b6002840180546001600160601b0319166001600160601b03929092169190911790556040518281527f7f4f497e086b2eb55f8a9885ba00d33399bbe0ebcb92ea092834386435a1b9c09060200160405180910390a15b60028301546c0100000000000000000000000090046001600160601b031681146200042f57620003c5816200043460201b620020831760201c565b6002840180546001600160601b03929092166c0100000000000000000000000002600160601b600160c01b03199092169190911790556040518181527fb5f554e5ef00806bace1edbb84186512ebcefa2af7706085143f501f29314df79060200160405180910390a15b505050565b60006001600160601b038211156200045f5760405163408ba96f60e11b815260040160405180910390fd5b5090565b60405161012081016001600160401b03811182821017156200049557634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b0381168114620004b357600080fd5b919050565b60006101208284031215620004cc57600080fd5b620004d662000463565b620004e1836200049b565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b6000826200055d57634e487b7160e01b600052601260045260246000fd5b500690565b60805160a05160c05160e0516101005161012051610140516142726200065e6000396000818161241b01526126f80152600081816104f6015281816114fd01528181611682015281816117a2015281816125420152818161279601526135f5015260008181610cce01526113ce0152600061136e015260008181610350015281816134cc0152613501015260008181610415015281816122630152818161324c01528181613281015281816132af01526132da0152600081816106bc0152818161090b01528181610c9d0152818161115b0152818161139f0152818161163f01528181611834015281816119120152611bac01526142726000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80637a766460116101a7578063a694fc3a116100ee578063e8376b8a11610097578063ed63e80711610071578063ed63e80714610700578063f2fde38b1461070e578063fa4934e71461072157600080fd5b8063e8376b8a146106e8578063e937fdaa146106f0578063e9f37cdf146106f857600080fd5b8063cfcd8fd8116100c8578063cfcd8fd8146106a7578063d174e658146106ba578063e0974ea5146106e057600080fd5b8063a694fc3a14610684578063a7a2f5aa14610697578063b88a802f1461069f57600080fd5b80638da5cb5b1161015057806392eefe9b1161012a57806392eefe9b1461064b5780639a109bc21461065e578063a07aea1c1461067157600080fd5b80638da5cb5b146105f25780638fb4b57314610603578063929ec5371461061657600080fd5b806387e900b11161018157806387e900b1146105b95780638899fdeb146105cc5780638932a90d146105df57600080fd5b80637a7664601461055b5780637e1a3786146105925780637eee288d146105a657600080fd5b80633ff089851161026b5780635c975abb116102145780636d70f7ae116101ee5780636d70f7ae1461052d578063715018a61461054057806375c93bb91461054857600080fd5b80635c975abb146104e25780635e8b40d7146104f457806363b2c85a1461051a57600080fd5b80634e71d92d116102455780634e71d92d146104b357806351858e27146104bb57806359f01879146104c357600080fd5b80633ff08985146104855780634a4e3bd5146104985780634aba2ca9146104a057600080fd5b80632624c83c116102cd5780633018205f116102a75780633018205f1461046157806332e288501461047257806338adb6f01461047d57600080fd5b80632624c83c14610413578063282d3fdf146104395780632e17de781461044e57600080fd5b8063181f5a77116102fe578063181f5a77146103a75780631ddb5552146103d657806322f3e2d4146103fb57600080fd5b8063049b2ca0146103255780630641bdd81461034b5780630fbc8f5b14610396575b600080fd5b6002546201000090046001600160601b03165b6040519081526020015b60405180910390f35b6003547f000000000000000000000000000000000000000000000000000000000000000090600160601b90046001600160601b03165b60408051928352602083019190915201610342565b6003546001600160601b0316610338565b604080518082018252600d81526c05374616b696e6720302e312e3609c1b602082015290516103429190613d98565b600c546001600160a01b03165b6040516001600160a01b039091168152602001610342565b610403610742565b6040519015158152602001610342565b7f0000000000000000000000000000000000000000000000000000000000000000610338565b61044c610447366004613dc7565b61076d565b005b61044c61045c366004613df1565b6108b1565b6009546001600160a01b03166103e3565b60065460ff16610338565b610338610980565b610338610493366004613e0a565b61098c565b61044c610a45565b61044c6104ae366004613e25565b610a57565b61044c610a77565b61044c610aa8565b60085463ffffffff600160701b8204811691600160501b900416610381565b600054600160a01b900460ff16610403565b7f0000000000000000000000000000000000000000000000000000000000000000610338565b61044c610528366004613e0a565b610ab8565b61040361053b366004613e0a565b610c06565b61044c610c29565b61044c610556366004613e25565b610c3b565b610338610569366004613e0a565b6001600160a01b031660009081526001602052604090205461010090046001600160601b031690565b60085469ffffffffffffffffffff16610338565b61044c6105b4366004613dc7565b610d3a565b6103386105c7366004613e0a565b610e78565b61044c6105da366004613dc7565b610f9f565b61044c6105ed366004613e47565b6111cc565b6000546001600160a01b03166103e3565b61044c610611366004613e25565b611332565b610338610624366004613e0a565b6001600160a01b03166000908152600160205260409020600201546001600160601b031690565b61044c610659366004613e0a565b6113f4565b61033861066c366004613e0a565b611471565b61044c61067f366004613eb9565b611547565b61044c610692366004613df1565b6115a6565b610338611667565b61044c6116a6565b61044c6106b5366004613e25565b611891565b7f00000000000000000000000000000000000000000000000000000000000000006103e3565b6103386118ef565b61044c611999565b61044c611c09565b600454610338565b60075463ffffffff16610338565b61044c61071c366004613e0a565b611cc9565b61073461072f366004613e0a565b611d42565b604051610342929190613f1c565b60025460009060ff168015610768575060085442600160501b90910463ffffffff161115155b905090565b6009546001600160a01b0316331461079857604051630f5caa3360e41b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020805460ff166107e25760405163eac13dcd60e01b81526001600160a01b03841660048201526024015b60405180910390fd5b805461010090046001600160601b031682111561081557604051631d820b1760e01b8152600481018390526024016107d9565b61081e82612083565b60028201805460009061083b9084906001600160601b0316613fb6565b92506101000a8154816001600160601b0302191690836001600160601b031602179055507f9f1ec8c880f76798e7b793325d625e9b60e4082a553c98f42b6cda368dd6000883836040516108a49291906001600160a01b03929092168252602082015260400190565b60405180910390a1505050565b6108b96120b1565b60006108ca64e8d4a5100083613ff3565b905080156108df576108dc8183614007565b91505b6000806108ee338560006120fe565b909250905061093233610901838561401a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016919061280a565b6040805133815260208101869052908101839052606081018290527f204fccf0d92ed8d48f204adb39b2e81e92bad0dedb93f5716ca9478cfb57de009060800160405180910390a150505050565b6000610768600161286d565b336000908152600160208190526040822001805482036109af5750600092915050565b60005b8154811015610a3e5760008282815481106109cf576109cf61402d565b90600052602060002090600202019050428383815481106109f2576109f261402d565b90600052602060002090600202016001015411610a25578054610a1e906001600160601b03168561401a565b9350610a2b565b50610a3e565b5080610a3681614043565b9150506109b2565b5050919050565b610a4d6128c3565b610a5561291d565b565b610a5f6128c3565b610a6761296d565b610a7360018383611f1c565b5050565b610a7f6120b1565b610a876116a6565b336000908152600160208190526040909120015415610a5557610a55611999565b610ab06128c3565b610a5561299c565b610ac06128c3565b6001600160a01b0381163b1580610adf57506001600160a01b03811630145b80610af75750600a546001600160a01b038281169116145b80610b0f5750600c546001600160a01b038281169116145b80610b8657506040516301ffc9a760e01b81526331f5be1560e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b84919061405c565b155b15610ba4576040516306cf420760e31b815260040160405180910390fd5b600c80546001600160a01b0319908116909155600a80546001600160a01b03841692168217905542600b556040519081527f5c74c441be501340b2713817a6c6975e6f3d4a4ae39fa1ac0bf75d3c54a0cad3906020015b60405180910390a150565b6001600160a01b03811660009081526001602052604081205460ff165b92915050565b610c316128c3565b610a5560006129df565b610c436128c3565b610c4b61296d565b600254610c6a906201000090046001600160601b03165b600590612a2f565b610c90610c75611667565b6002546201000090046001600160601b031660059190612aad565b610cc56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612b1d565b610cf2600583837f0000000000000000000000000000000000000000000000000000000000000000612b5b565b7f6c07ee05dcf262f13abf9d87b846ee789d2f90fe991d495acd7d7fc109ee1f5582610d1e834261401a565b6040805192835260208301919091520160405180910390a15050565b6009546001600160a01b03163314610d6557604051630f5caa3360e41b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020805460ff16610daa5760405163eac13dcd60e01b81526001600160a01b03841660048201526024016107d9565b60028101546001600160601b0316821115610de957600281015460405163c9dcab8760e01b81526001600160601b0390911660048201526024016107d9565b610df282612083565b600282018054600090610e0f9084906001600160601b031661407e565b92506101000a8154816001600160601b0302191690836001600160601b031602179055507f0f0bc5b519ddefdd8e5f9e6423433aa2b869738de2ae34d58ebc796fc749fa0d83836040516108a49291906001600160a01b03929092168252602082015260400190565b6001600160a01b03811660009081526001602081815260408084208151608081018352815460ff81161515825261010090046001600160601b03168185015293810180548351818602810186018552818152879695939486019390929190879084015b82821015610f23576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101610edb565b50505090825250600291909101546001600160601b03166020909101528051909150610f525750600092915050565b80602001516001600160601b0316600003610f705750600092915050565b610f9883610f7c611667565b6002546201000090046001600160601b03166005929190612c63565b9392505050565b6009546001600160a01b03163314610fca57604051630f5caa3360e41b815260040160405180910390fd5b6001600160a01b03821660009081526001602081815260408084208151608081018352815460ff81161515825261010090046001600160601b03168185015293810180548351818602810186018552818152929493860193879084015b8282101561106f576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101611027565b50505090825250600291909101546001600160601b031660209091015280519091506110b95760405163eac13dcd60e01b81526001600160a01b03841660048201526024016107d9565b60006110c784610f7c611667565b905060006110d58483612cac565b90506110e081612083565b6001600160a01b03861660009081526005602052604090208054600c90611118908490600160601b90046001600160601b0316613fb6565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506111826111516000546001600160a01b031690565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908361280a565b604080516001600160a01b0387168152602081018390527ff3136d14e8fd8ddb090effdbecb5d9547b6e17d9006ef9c25ca5b1e00dbfe51791015b60405180910390a15050505050565b6111d4610742565b156111fc57604051635185386160e11b815260016004820152600060248201526044016107d9565b600c546001600160a01b0316611225576040516306cf420760e31b815260040160405180910390fd5b600080600061123333612cc2565b600c549295509093509150611260906001600160a01b031682611256858761401a565b610901919061401a565b600c546001600160a01b03166331f5be158261127c858761401a565b611286919061401a565b33888860405160200161129b939291906140c7565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016112c79291906140ea565b600060405180830381600087803b1580156112e157600080fd5b505af11580156112f5573d6000803e3d6000fd5b505050507f667838b33bdc898470de09e0e746990f2adc11b965b7fe6828e502ebc39e04343384848489896040516111bd96959493929190614103565b61133a6128c3565b600854600160701b900463ffffffff16156113675760405162dc149f60e41b815260040160405180910390fd5b61139260017f0000000000000000000000000000000000000000000000000000000000000000612e33565b6113c76001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612b1d565b610a7360057f00000000000000000000000000000000000000000000000000000000000000008484612eb3565b6113fc6128c3565b6001600160a01b0381166114235760405163f6b2911f60e01b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0383169081179091556040519081527f79f74fd5964b6943d8a1865abfb7f668c92fa3f32c0a2e3195da7d0946703ad790602001610bfb565b6001600160a01b03811660009081526001602052604081205461010090046001600160601b03168082036114a85750600092915050565b6001600160a01b03831660009081526001602052604090205460ff16156114d25750600092915050565b6001600160a01b0383166000908152600560205260409020546001600160601b031661153d611521837f0000000000000000000000000000000000000000000000000000000000000000612f82565b6002546201000090046001600160601b03165b60059190612f98565b610f989190614007565b61154f6128c3565b600854600160701b900463ffffffff16158015906115725750611570610742565b155b1561159a57604051635185386160e11b815260006004820152600160248201526044016107d9565b610a7360018383612fbe565b6115ae6120b1565b64e8d4a510008110156115db57604051631d820b1760e01b815264e8d4a5100060048201526024016107d9565b60006115ec64e8d4a5100083613ff3565b90508015611601576115fe8183614007565b91505b3360009081526001602052604090205460ff1615611628576116233383613212565b611632565b611632338361348e565b610a736001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612b1d565b600254600090610768906201000090046001600160601b03167f000000000000000000000000000000000000000000000000000000000000000061376f565b6116ae6120b1565b3360009081526001602081815260408084208151608081018352815460ff81161515825261010090046001600160601b03168185015293810180548351818602810186018552818152929493860193879084015b8282101561174a576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101611702565b50505090825250600291909101546001600160601b031660209091015280519091501561178a5760405163b7195bcb60e01b815260040160405180910390fd5b60006117c661152183602001516001600160601b03167f0000000000000000000000000000000000000000000000000000000000000000612f82565b33600090815260056020526040812054919250906117ed906001600160601b031683614007565b90506117f882612083565b33600081815260056020526040902080546001600160601b0319166001600160601b03939093169290921790915561185b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908361280a565b60408051338152602081018390527f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724191016108a4565b6118996128c3565b6118a1610742565b156118c957604051635185386160e11b815260016004820152600060248201526044016107d9565b6002546118e4906201000090046001600160601b0316610c62565b611392610c75611667565b6004546000906118fd610980565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119859190614144565b61198f9190614007565b6107689190614007565b6119a16120b1565b33600090815260016020819052604082200180549091036119d757604051630f1ed8ad60e21b81523360048201526024016107d9565b60008060005b8354811015611a9d5760008482815481106119fa576119fa61402d565b9060005260206000209060020201905042858381548110611a1d57611a1d61402d565b90600052602060002090600202016001015411611a84578054611a49906001600160601b03168561401a565b8154600480549296506001600160601b0390911691600090611a6c908490614007565b90915550839050611a7c81614043565b935050611a8a565b50611a9d565b5080611a9581614043565b9150506119dd565b508015611b995760005b8354611ab4908390614007565b811015611b405783611ac6838361401a565b81548110611ad657611ad661402d565b9060005260206000209060020201848281548110611af657611af661402d565b60009182526020909120825460029092020180546001600160601b0319166001600160601b0390921691909117815560019182015491015580611b3881614043565b915050611aa7565b5060005b81811015611b975783805480611b5c57611b5c61415d565b60008281526020812060026000199093019283020180546001600160601b031916815560010155905580611b8f81614043565b915050611b44565b505b8115611bd357611bd36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338461280a565b60408051338152602081018490527fbb6ad7a7bb63a1746b89ec2f2339de4e0f983ef7e7b101c8c4f716c08c2a711491016108a4565b611c116128c3565b600a546001600160a01b0316611c3a576040516306cf420760e31b815260040160405180910390fd5b600b54611c4a9062093a8061401a565b421015611c6a57604051631decfebb60e31b815260040160405180910390fd5b600a8054600c80546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527ffa33c052bbee754f3c0482a89962daffe749191fa33c696a61e947fbfd68bd84906020015b60405180910390a1565b611cd16128c3565b6001600160a01b038116611d365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d9565b611d3f816129df565b50565b606080600060016000016000856001600160a01b03166001600160a01b03168152602001908152602001600020600101805480602002602001604051908101604052809291908181526020016000905b82821015611dda576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101611d92565b505050509050805167ffffffffffffffff811115611dfa57611dfa614173565b604051908082528060200260200182016040528015611e23578160200160208202803683370190505b509250805167ffffffffffffffff811115611e4057611e40614173565b604051908082528060200260200182016040528015611e69578160200160208202803683370190505b50915060005b8151811015611f1557818181518110611e8a57611e8a61402d565b602002602001015160000151848281518110611ea857611ea861402d565b60200260200101906001600160601b031690816001600160601b031681525050818181518110611eda57611eda61402d565b602002602001015160200151838281518110611ef857611ef861402d565b602090810291909101015280611f0d81614043565b915050611e6f565b5050915091565b60028301546001600160601b0316821015611f4d57604051630f9e1c3b60e11b8152600481018390526024016107d9565b6002830154600160601b90046001600160601b0316811015611f855760405163bc91aa3360e01b8152600481018290526024016107d9565b60028301546001600160601b03168214611ff857611fa282612083565b6002840180546001600160601b0319166001600160601b03929092169190911790556040518281527f7f4f497e086b2eb55f8a9885ba00d33399bbe0ebcb92ea092834386435a1b9c09060200160405180910390a15b6002830154600160601b90046001600160601b0316811461207e5761201c81612083565b6002840180546001600160601b0392909216600160601b026bffffffffffffffffffffffff60601b199092169190911790556040518181527fb5f554e5ef00806bace1edbb84186512ebcefa2af7706085143f501f29314df7906020016108a4565b505050565b60006001600160601b038211156120ad5760405163408ba96f60e11b815260040160405180910390fd5b5090565b600054600160a01b900460ff1615610a555760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107d9565b6001600160a01b03831660009081526001602081815260408084208151608081018352815460ff81161515825261010090046001600160601b03168185015293810180548351818602810186018552818152879687969095860193919290879084015b828210156121a9576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101612161565b50505090825250600291909101546001600160601b0316602090910152905060008590036121f557604051637ece672b60e11b81526001600160a01b03871660048201526024016107d9565b8481602001516001600160601b0316101561223457602081015160405163477d28dd60e01b81526001600160601b0390911660048201526024016107d9565b60025461224f906201000090046001600160601b0316610c62565b61225a610c75611667565b80511561250c577f000000000000000000000000000000000000000000000000000000000000000085146122ac57604051633ac3109f60e01b81526001600160a01b03871660048201526024016107d9565b60608101516001600160601b0316156122e357604051634ed4c4c760e11b81526001600160a01b03871660048201526024016107d9565b60006122f187610f7c611667565b90506122fc86612083565b60028054600e9061231e908490600160701b90046001600160601b031661407e565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555061234b86612083565b6001600160a01b0388166000908152600160208190526040909120805490919061238490849061010090046001600160601b031661407e565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555084612484576123b686612083565b6001600160601b0316600160030160008282546123d3919061401a565b90915550506001600160a01b038716600090815260016020819052604091829020825180840190935201908061240889612083565b6001600160601b031681526020016124407f00000000000000000000000000000000000000000000000000000000000000004261401a565b90528154600180820184556000938452602093849020835160029093020180546001600160601b0319166001600160601b0390931692909217825591909201519101555b600680546001919060009061249d90849060ff16614189565b825461010092830a60ff818102199092169290911602179091556006546001600160a01b038a16600090815260056020526040812080546bffffffffffffffffffffffff60601b1916939092046001600160601b0316600160601b029290921790559450909250612802915050565b6001600160a01b0386166000908152600560209081526040822054908301516001600160601b03918216916125669161152191167f0000000000000000000000000000000000000000000000000000000000000000612f82565b6125709190614007565b905061257b86612083565b60028054819061259b9084906201000090046001600160601b031661407e565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506125c886612083565b6001600160a01b0388166000908152600160208190526040909120805490919061260190849061010090046001600160601b031661407e565b82546001600160601b0391821661010093840a90810290830219909116179092556001600160a01b038a16600090815260016020526040812054919091049091169003905061268557600780546001919060009061266690849063ffffffff166141a2565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b846127615761269386612083565b6001600160601b0316600160030160008282546126b0919061401a565b90915550506001600160a01b03871660009081526001602081905260409182902082518084019093520190806126e589612083565b6001600160601b0316815260200161271d7f00000000000000000000000000000000000000000000000000000000000000004261401a565b90528154600180820184556000938452602093849020835160029093020180546001600160601b0319166001600160601b0390931692909217825591909201519101555b6001600160a01b0387166000908152600160205260409020546127bf906127ba906115219061010090046001600160601b03167f0000000000000000000000000000000000000000000000000000000000000000612f82565b612083565b6001600160a01b038816600090815260056020526040812080546001600160601b0319166001600160601b03939093169290921790915590935091506128029050565b935093915050565b6040516001600160a01b03831660248201526044810182905261207e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261377b565b60408051608081018252600183015460ff8082161515835261010082041660208301526001600160601b036201000082048116938301849052600160701b9091041660608201819052600092610f98919061401a565b6000546001600160a01b03163314610a555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d9565b61292561384d565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001611cbf565b612975610742565b610a5557604051635185386160e11b815260006004820152600160248201526044016107d9565b6129a46120b1565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586129553390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612a3c6127ba83836138a6565b6002830180546001600160601b0392909216640100000000026fffffffffffffffffffffffff0000000019909216919091179055612a81612a7c836139a6565b6139c5565b6002909201805463ffffffff93909316600160801b0263ffffffff60801b199093169290921790915550565b612abb6127ba8484846139ec565b6001840180546001600160601b039290921661010002610100600160681b0319909216919091179055612af0612a7c846139a6565b6001909301805463ffffffff94909416600160681b0263ffffffff60681b19909416939093179092555050565b6040516001600160a01b0380851660248301528316604482015260648101829052612b559085906323b872dd60e01b90608401612836565b50505050565b6003840154600090849042600160501b90910463ffffffff161115612bb7576003860154612b97904290600160501b900463ffffffff16614007565b6003870154612bb2919069ffffffffffffffffffff166141bf565b612bba565b60005b612bc4919061401a565b905081831015612be65760405162da056d60e81b815260040160405180910390fd5b612bf3612a7c844261401a565b60038601805463ffffffff92909216600160501b026dffffffff0000000000000000000019909216919091179055612c33612c2e84836141d6565b613af7565b600395909501805469ffffffffffffffffffff191669ffffffffffffffffffff9096169590951790945550505050565b6001600160a01b038316600090815260208590526040812054600160601b90046001600160601b0316612c97868585613b24565b612ca19190614007565b90505b949350505050565b6000818310612cbb5781610f98565b5090919050565b6001600160a01b03811660009081526001602081815260408084208151608081018352815460ff81161515825261010090046001600160601b031681850152938101805483518186028101860185528181528796879687969195949186019390879084015b82821015612d6f576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101612d27565b50505090825250600291909101546001600160601b039081166020928301529082015191925016600003612dc157604051637256ef3960e11b81526001600160a01b03861660048201526024016107d9565b60608101516001600160601b031615612df857604051634ed4c4c760e11b81526001600160a01b03861660048201526024016107d9565b600080612e148784602001516001600160601b031660016120fe565b6020909401516001600160601b03169650945091925050509193909250565b6001820154610100900460ff16811115612e7657600182015460405163e709379960e01b815261010090910460ff166004820152602481018290526044016107d9565b6001828101805460ff191690911790556040517fded6ebf04e261e1eb2f3e3b268a2e6aee5b478c15b341eba5cf18b9bc80c2e6390600090a15050565b6000612ebe426139c5565b60038601805463ffffffff60701b1916600160701b63ffffffff84169081029190911790915560018701805463ffffffff60681b1916600160681b830217905560028701805463ffffffff60801b1916600160801b9092029190911790559050612f2a85848487612b5b565b60038501546040805185815263ffffffff600160701b840481166020830152600160501b909304909216908201527f4398f7e311b2f8164ce7d424166e6e84fd9a74adda069e902beead8e4eb737b8906060016111bd565b6000612f8e838361376f565b610f989084614007565b600064e8d4a51000612faa85846138a6565b612fb490856141bf565b612ca491906141d6565b60005b818110156131ce57836000848484818110612fde57612fde61402d565b9050602002016020810190612ff39190613e0a565b6001600160a01b0316815260208101919091526040016000205460ff1615613060578282828181106130275761302761402d565b905060200201602081019061303c9190613e0a565b604051625290b360e11b81526001600160a01b0390911660048201526024016107d9565b600084818585858181106130765761307661402d565b905060200201602081019061308b9190613e0a565b6001600160a01b0316815260208101919091526040016000205461010090046001600160601b03161115613105578282828181106130cb576130cb61402d565b90506020020160208101906130e09190613e0a565b60405163602d4d1160e01b81526001600160a01b0390911660048201526024016107d9565b600184600085858581811061311c5761311c61402d565b90506020020160208101906131319190613e0a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d83838381811061318c5761318c61402d565b90506020020160208101906131a19190613e0a565b6040516001600160a01b03909116815260200160405180910390a1806131c681614043565b915050612fc1565b506131d881613b31565b60018401546131ef9190610100900460ff166141ea565b6001909301805460ff949094166101000261ff0019909416939093179092555050565b6001600160a01b0382166000908152600160205260408120805490916101009091046001600160601b031690613248848361401a565b90507f00000000000000000000000000000000000000000000000000000000000000008110156132ad57604051631d820b1760e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526024016107d9565b7f000000000000000000000000000000000000000000000000000000000000000081111561331b576132ff7f000000000000000000000000000000000000000000000000000000000000000082614007565b604051631728673b60e31b81526004016107d991815260200190565b816000036133b95761332e610c75611667565b60065460ff16600081900361334f5760068054610100600160681b03191690555b61335a8160016141ea565b6006805460ff191660ff9290921691909117908190556001600160a01b038716600090815260056020526040902080546bffffffffffffffffffffffff60601b19166101009092046001600160601b0316600160601b02919091179055505b6133c284612083565b60028054600e906133e4908490600160701b90046001600160601b0316613fb6565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555061341181612083565b6001600160a01b03861660008181526001602090815260409182902080546001600160601b039590951661010002610100600160681b03199095169490941790935580519182529181018690529081018290527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90906060016111bd565b61349661296d565b6001600160a01b03821660009081526001602052604081205461010090046001600160601b0316906134c8838361401a565b90507f000000000000000000000000000000000000000000000000000000000000000081101561352d57604051631d820b1760e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526024016107d9565b600354600160601b90046001600160601b031680821115613552576132ff8382614007565b600061355e6001613b55565b90508085111561358457604051631728673b60e31b8152600481018290526024016107d9565b60025461359f906201000090046001600160601b0316610c62565b6135aa610c75611667565b836000036135ed5760078054600191906000906135ce90849063ffffffff16614203565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b6000613619867f0000000000000000000000000000000000000000000000000000000000000000612f82565b905061363b6127ba826115346002546001600160601b03620100009091041690565b6001600160a01b0388166000908152600560205260408120805490919061366c9084906001600160601b0316613fb6565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555061369986612083565b6002805481906136b99084906201000090046001600160601b0316613fb6565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506136e684612083565b6001600160a01b03881660008181526001602090815260409182902080546001600160601b039590951661010002610100600160681b03199095169490941790935580519182529181018890529081018590527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee909060600160405180910390a150505050505050565b6000610f9882846141d6565b60006137d0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613bb19092919063ffffffff16565b80519091501561207e57808060200190518101906137ee919061405c565b61207e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107d9565b600054600160a01b900460ff16610a555760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016107d9565b6000816000036138cc5750600282015464010000000090046001600160601b0316610c23565b600383015460009042600160501b90910463ffffffff16111561390a57600284015461390590600160801b900463ffffffff1642614007565b613935565b600284015460038501546139359163ffffffff600160801b909104811691600160501b900416614007565b600385015490915061397590849064e8d4a510009061396190859069ffffffffffffffffffff166141bf565b61396b91906141bf565b6127ba91906141d6565b6002850154613995919064010000000090046001600160601b0316613fb6565b6001600160601b0316949350505050565b6003810154600090610c2390600160501b900463ffffffff1642612cac565b600063ffffffff8211156120ad5760405163408ba96f60e11b815260040160405180910390fd5b600081600003613a0f5750600183015461010090046001600160601b0316610f98565b600384015460009042600160501b90910463ffffffff161115613a4d576001850154613a4890600160681b900463ffffffff1642614007565b613a78565b60018501546003860154613a789163ffffffff600160681b909104811691600160501b900416614007565b600180870154919250613ac891613a949160ff90911690613bc0565b600387015485908790613ab490869069ffffffffffffffffffff166141bf565b613abe91906141bf565b61396b91906141d6565b6001860154613ae5919061010090046001600160601b0316613fb6565b6001600160601b031695945050505050565b600069ffffffffffffffffffff8211156120ad5760405163408ba96f60e11b815260040160405180910390fd5b6000612ca48484846139ec565b600060ff8211156120ad5760405163408ba96f60e11b815260040160405180910390fd5b60408051608081018252600183015460ff8082161515835261010082041660208301526001600160601b036201000082048116938301849052600160701b909104811660608301526002840154600093610f9892909116614007565b6060612ca48484600085613bcf565b6000818311612cbb5781610f98565b606082471015613c305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107d9565b600080866001600160a01b03168587604051613c4c9190614220565b60006040518083038185875af1925050503d8060008114613c89576040519150601f19603f3d011682016040523d82523d6000602084013e613c8e565b606091505b5091509150613c9f87838387613caa565b979650505050505050565b60608315613d19578251600003613d12576001600160a01b0385163b613d125760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d9565b5081612ca4565b612ca48383815115613d2e5781518083602001fd5b8060405162461bcd60e51b81526004016107d99190613d98565b60005b83811015613d63578181015183820152602001613d4b565b50506000910152565b60008151808452613d84816020860160208601613d48565b601f01601f19169290920160200192915050565b602081526000610f986020830184613d6c565b80356001600160a01b0381168114613dc257600080fd5b919050565b60008060408385031215613dda57600080fd5b613de383613dab565b946020939093013593505050565b600060208284031215613e0357600080fd5b5035919050565b600060208284031215613e1c57600080fd5b610f9882613dab565b60008060408385031215613e3857600080fd5b50508035926020909101359150565b60008060208385031215613e5a57600080fd5b823567ffffffffffffffff80821115613e7257600080fd5b818501915085601f830112613e8657600080fd5b813581811115613e9557600080fd5b866020828501011115613ea757600080fd5b60209290920196919550909350505050565b60008060208385031215613ecc57600080fd5b823567ffffffffffffffff80821115613ee457600080fd5b818501915085601f830112613ef857600080fd5b813581811115613f0757600080fd5b8660208260051b8501011115613ea757600080fd5b604080825283519082018190526000906020906060840190828701845b82811015613f5e5781516001600160601b031684529284019290840190600101613f39565b5050508381038285015284518082528583019183019060005b81811015613f9357835183529284019291840191600101613f77565b5090979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160601b03818116838216019080821115613fd657613fd6613fa0565b5092915050565b634e487b7160e01b600052601260045260246000fd5b60008261400257614002613fdd565b500690565b81810381811115610c2357610c23613fa0565b80820180821115610c2357610c23613fa0565b634e487b7160e01b600052603260045260246000fd5b60006001820161405557614055613fa0565b5060010190565b60006020828403121561406e57600080fd5b81518015158114610f9857600080fd5b6001600160601b03828116828216039080821115613fd657613fd6613fa0565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201526000612ca160408301848661409e565b828152604060208201526000612ca46040830184613d6c565b6001600160a01b038716815285602082015284604082015283606082015260a06080820152600061413860a08301848661409e565b98975050505050505050565b60006020828403121561415657600080fd5b5051919050565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60ff8281168282160390811115610c2357610c23613fa0565b63ffffffff828116828216039080821115613fd657613fd6613fa0565b8082028115828204841417610c2357610c23613fa0565b6000826141e5576141e5613fdd565b500490565b60ff8181168382160190811115610c2357610c23613fa0565b63ffffffff818116838216019080821115613fd657613fd6613fa0565b60008251614232818460208701613d48565b919091019291505056fea264697066735822122067f9409ccc761037565889b633bcf8dbe7ca81bfcb449cac6efdacfef668965b64736f6c63430008120033", "sourceMap": "981:30207:0:-:0;;;4314:1536;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:37;719:10:51;936:18:37;:32::i;:::-;1006:5:44;996:15;;-1:-1:-1;;;;996:15:44;;;4385:11:0;;-1:-1:-1;;;;;4377:34:0;4373:67;;4420:20;;-1:-1:-1;;;4420:20:0;;;;;;;;;;;4373:67;4454:6;:32;;;4490:1;4454:37;4450:73;;4500:23;;-1:-1:-1;;;4500:23:0;;;;;;;;;;;4450:73;4601:1;4566:6;:32;;;1775:4:7;4537:61:0;;;;:::i;:::-;:65;4533:126;;;4625:23;;-1:-1:-1;;;4625:23:0;;;;;;;;;;;4533:126;4672:6;:26;;;4702:1;4672:31;4668:97;;4726:28;;-1:-1:-1;;;4726:28:0;;;;;;;;;;;4668:97;4811:6;:37;;;4778:6;:30;;;:70;4774:140;;;4871:32;;-1:-1:-1;;;4871:32:0;;;;;;;;;;;4774:140;4924:82;4941:6;:25;;;4968:6;:37;;;4924:5;:16;;;;;;:82;;;;;:::i;:::-;5024:11;;-1:-1:-1;;;;;5016:19:0;;;;;5068:26;;;;5045:49;;;;5131:30;;;;;5104:57;;;;5198:30;;;;;5171:57;;;;5259:24;;;;;5238:45;;;;5322:32;;;;;5293:61;;5391:30;;;;;5364:57;;5475:11;;5501:25;;;;5540:37;;;;;5591:30;;5635:26;;5675:30;;5719:24;;5757:32;;5803:30;;5437:406;;;;;;5475:11;;5501:25;;5540:37;;5591:30;;5635:26;;5675:30;;5719:24;;5757:32;;-1:-1:-1;;;;;1977:32:127;;;;1959:51;;2041:2;2026:18;;2019:34;;;;2084:2;2069:18;;2062:34;;;;2127:2;2112:18;;2105:34;;;;2170:3;2155:19;;2148:35;;;;1997:3;2199:19;;2192:35;2258:3;2243:19;;2236:35;2302:3;2287:19;;2280:35;2346:3;2331:19;;2324:35;1946:3;1931:19;;1588:777;5437:406:0;;;;;;;;4314:1536;981:30207;;2433:187:37;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:37;;;-1:-1:-1;;;;;;2541:17:37;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;6116:803:9:-;6232:11;;;:23;-1:-1:-1;;;;;6232:23:9;:37;-1:-1:-1;6228:103:9;;;6292:28;;-1:-1:-1;;;6292:28:9;;;;;2516:25:127;;;2489:18;;6292:28:9;;;;;;;;6228:103;6344:11;;;:35;;;;-1:-1:-1;;;;;6344:35:9;-1:-1:-1;;6340:145:9;;;6428:46;;-1:-1:-1;;;6428:46:9;;;;;2516:25:127;;;2489:18;;6428:46:9;2370:177:127;6340:145:9;6499:11;;;:23;-1:-1:-1;;;;;6499:23:9;:38;;6495:167;;6579:23;:11;:21;;;;;:23;;:::i;:::-;6553:11;;;:49;;-1:-1:-1;;;;;;6553:49:9;-1:-1:-1;;;;;6553:49:9;;;;;;;;;;6621:30;;2516:25:127;;;6621:30:9;;2504:2:127;2489:18;6621:30:9;;;;;;;6495:167;6675:11;;;:35;;;;-1:-1:-1;;;;;6675:35:9;:62;;6671:242;;6791:35;:23;:33;;;;;:35;;:::i;:::-;6753:11;;;:73;;-1:-1:-1;;;;;6753:73:9;;;;;;-1:-1:-1;;;;;;;;6753:73:9;;;;;;;;;6845:57;;2516:25:127;;;6845:57:9;;2504:2:127;2489:18;6845:57:9;;;;;;;6671:242;6116:803;;;:::o;1086:155:8:-;1143:6;-1:-1:-1;;;;;1165:19:8;;1161:43;;;1193:11;;-1:-1:-1;;;1193:11:8;;;;;;;;;;;1161:43;-1:-1:-1;1228:5:8;1086:155::o;14:344:127:-;81:2;75:9;123:3;111:16;;-1:-1:-1;;;;;142:34:127;;178:22;;;139:62;136:185;;;243:10;238:3;234:20;231:1;224:31;278:4;275:1;268:15;306:4;303:1;296:15;136:185;337:2;330:22;14:344;:::o;363:185::-;450:13;;-1:-1:-1;;;;;492:31:127;;482:42;;472:70;;538:1;535;528:12;472:70;363:185;;;:::o;553:816::-;660:6;713:3;701:9;692:7;688:23;684:33;681:53;;;730:1;727;720:12;681:53;756:17;;:::i;:::-;796:48;834:9;796:48;:::i;:::-;789:5;782:63;898:2;887:9;883:18;877:25;872:2;865:5;861:14;854:49;956:2;945:9;941:18;935:25;930:2;923:5;919:14;912:49;1014:2;1003:9;999:18;993:25;988:2;981:5;977:14;970:49;1073:3;1062:9;1058:19;1052:26;1046:3;1039:5;1035:15;1028:51;1133:3;1122:9;1118:19;1112:26;1106:3;1099:5;1095:15;1088:51;1193:3;1182:9;1178:19;1172:26;1166:3;1159:5;1155:15;1148:51;1253:3;1242:9;1238:19;1232:26;1226:3;1219:5;1215:15;1208:51;1278:3;1334:2;1323:9;1319:18;1313:25;1308:2;1301:5;1297:14;1290:49;;1358:5;1348:15;;;553:816;;;;:::o;1374:209::-;1406:1;1432;1422:132;;1476:10;1471:3;1467:20;1464:1;1457:31;1511:4;1508:1;1501:15;1539:4;1536:1;1529:15;1422:132;-1:-1:-1;1568:9:127;;1374:209::o;2370:177::-;981:30207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x608060405234801561001057600080fd5b50600436106103205760003560e01c80637a766460116101a7578063a694fc3a116100ee578063e8376b8a11610097578063ed63e80711610071578063ed63e80714610700578063f2fde38b1461070e578063fa4934e71461072157600080fd5b8063e8376b8a146106e8578063e937fdaa146106f0578063e9f37cdf146106f857600080fd5b8063cfcd8fd8116100c8578063cfcd8fd8146106a7578063d174e658146106ba578063e0974ea5146106e057600080fd5b8063a694fc3a14610684578063a7a2f5aa14610697578063b88a802f1461069f57600080fd5b80638da5cb5b1161015057806392eefe9b1161012a57806392eefe9b1461064b5780639a109bc21461065e578063a07aea1c1461067157600080fd5b80638da5cb5b146105f25780638fb4b57314610603578063929ec5371461061657600080fd5b806387e900b11161018157806387e900b1146105b95780638899fdeb146105cc5780638932a90d146105df57600080fd5b80637a7664601461055b5780637e1a3786146105925780637eee288d146105a657600080fd5b80633ff089851161026b5780635c975abb116102145780636d70f7ae116101ee5780636d70f7ae1461052d578063715018a61461054057806375c93bb91461054857600080fd5b80635c975abb146104e25780635e8b40d7146104f457806363b2c85a1461051a57600080fd5b80634e71d92d116102455780634e71d92d146104b357806351858e27146104bb57806359f01879146104c357600080fd5b80633ff08985146104855780634a4e3bd5146104985780634aba2ca9146104a057600080fd5b80632624c83c116102cd5780633018205f116102a75780633018205f1461046157806332e288501461047257806338adb6f01461047d57600080fd5b80632624c83c14610413578063282d3fdf146104395780632e17de781461044e57600080fd5b8063181f5a77116102fe578063181f5a77146103a75780631ddb5552146103d657806322f3e2d4146103fb57600080fd5b8063049b2ca0146103255780630641bdd81461034b5780630fbc8f5b14610396575b600080fd5b6002546201000090046001600160601b03165b6040519081526020015b60405180910390f35b6003547f000000000000000000000000000000000000000000000000000000000000000090600160601b90046001600160601b03165b60408051928352602083019190915201610342565b6003546001600160601b0316610338565b604080518082018252600d81526c05374616b696e6720302e312e3609c1b602082015290516103429190613d98565b600c546001600160a01b03165b6040516001600160a01b039091168152602001610342565b610403610742565b6040519015158152602001610342565b7f0000000000000000000000000000000000000000000000000000000000000000610338565b61044c610447366004613dc7565b61076d565b005b61044c61045c366004613df1565b6108b1565b6009546001600160a01b03166103e3565b60065460ff16610338565b610338610980565b610338610493366004613e0a565b61098c565b61044c610a45565b61044c6104ae366004613e25565b610a57565b61044c610a77565b61044c610aa8565b60085463ffffffff600160701b8204811691600160501b900416610381565b600054600160a01b900460ff16610403565b7f0000000000000000000000000000000000000000000000000000000000000000610338565b61044c610528366004613e0a565b610ab8565b61040361053b366004613e0a565b610c06565b61044c610c29565b61044c610556366004613e25565b610c3b565b610338610569366004613e0a565b6001600160a01b031660009081526001602052604090205461010090046001600160601b031690565b60085469ffffffffffffffffffff16610338565b61044c6105b4366004613dc7565b610d3a565b6103386105c7366004613e0a565b610e78565b61044c6105da366004613dc7565b610f9f565b61044c6105ed366004613e47565b6111cc565b6000546001600160a01b03166103e3565b61044c610611366004613e25565b611332565b610338610624366004613e0a565b6001600160a01b03166000908152600160205260409020600201546001600160601b031690565b61044c610659366004613e0a565b6113f4565b61033861066c366004613e0a565b611471565b61044c61067f366004613eb9565b611547565b61044c610692366004613df1565b6115a6565b610338611667565b61044c6116a6565b61044c6106b5366004613e25565b611891565b7f00000000000000000000000000000000000000000000000000000000000000006103e3565b6103386118ef565b61044c611999565b61044c611c09565b600454610338565b60075463ffffffff16610338565b61044c61071c366004613e0a565b611cc9565b61073461072f366004613e0a565b611d42565b604051610342929190613f1c565b60025460009060ff168015610768575060085442600160501b90910463ffffffff161115155b905090565b6009546001600160a01b0316331461079857604051630f5caa3360e41b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020805460ff166107e25760405163eac13dcd60e01b81526001600160a01b03841660048201526024015b60405180910390fd5b805461010090046001600160601b031682111561081557604051631d820b1760e01b8152600481018390526024016107d9565b61081e82612083565b60028201805460009061083b9084906001600160601b0316613fb6565b92506101000a8154816001600160601b0302191690836001600160601b031602179055507f9f1ec8c880f76798e7b793325d625e9b60e4082a553c98f42b6cda368dd6000883836040516108a49291906001600160a01b03929092168252602082015260400190565b60405180910390a1505050565b6108b96120b1565b60006108ca64e8d4a5100083613ff3565b905080156108df576108dc8183614007565b91505b6000806108ee338560006120fe565b909250905061093233610901838561401a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016919061280a565b6040805133815260208101869052908101839052606081018290527f204fccf0d92ed8d48f204adb39b2e81e92bad0dedb93f5716ca9478cfb57de009060800160405180910390a150505050565b6000610768600161286d565b336000908152600160208190526040822001805482036109af5750600092915050565b60005b8154811015610a3e5760008282815481106109cf576109cf61402d565b90600052602060002090600202019050428383815481106109f2576109f261402d565b90600052602060002090600202016001015411610a25578054610a1e906001600160601b03168561401a565b9350610a2b565b50610a3e565b5080610a3681614043565b9150506109b2565b5050919050565b610a4d6128c3565b610a5561291d565b565b610a5f6128c3565b610a6761296d565b610a7360018383611f1c565b5050565b610a7f6120b1565b610a876116a6565b336000908152600160208190526040909120015415610a5557610a55611999565b610ab06128c3565b610a5561299c565b610ac06128c3565b6001600160a01b0381163b1580610adf57506001600160a01b03811630145b80610af75750600a546001600160a01b038281169116145b80610b0f5750600c546001600160a01b038281169116145b80610b8657506040516301ffc9a760e01b81526331f5be1560e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b84919061405c565b155b15610ba4576040516306cf420760e31b815260040160405180910390fd5b600c80546001600160a01b0319908116909155600a80546001600160a01b03841692168217905542600b556040519081527f5c74c441be501340b2713817a6c6975e6f3d4a4ae39fa1ac0bf75d3c54a0cad3906020015b60405180910390a150565b6001600160a01b03811660009081526001602052604081205460ff165b92915050565b610c316128c3565b610a5560006129df565b610c436128c3565b610c4b61296d565b600254610c6a906201000090046001600160601b03165b600590612a2f565b610c90610c75611667565b6002546201000090046001600160601b031660059190612aad565b610cc56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612b1d565b610cf2600583837f0000000000000000000000000000000000000000000000000000000000000000612b5b565b7f6c07ee05dcf262f13abf9d87b846ee789d2f90fe991d495acd7d7fc109ee1f5582610d1e834261401a565b6040805192835260208301919091520160405180910390a15050565b6009546001600160a01b03163314610d6557604051630f5caa3360e41b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020805460ff16610daa5760405163eac13dcd60e01b81526001600160a01b03841660048201526024016107d9565b60028101546001600160601b0316821115610de957600281015460405163c9dcab8760e01b81526001600160601b0390911660048201526024016107d9565b610df282612083565b600282018054600090610e0f9084906001600160601b031661407e565b92506101000a8154816001600160601b0302191690836001600160601b031602179055507f0f0bc5b519ddefdd8e5f9e6423433aa2b869738de2ae34d58ebc796fc749fa0d83836040516108a49291906001600160a01b03929092168252602082015260400190565b6001600160a01b03811660009081526001602081815260408084208151608081018352815460ff81161515825261010090046001600160601b03168185015293810180548351818602810186018552818152879695939486019390929190879084015b82821015610f23576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101610edb565b50505090825250600291909101546001600160601b03166020909101528051909150610f525750600092915050565b80602001516001600160601b0316600003610f705750600092915050565b610f9883610f7c611667565b6002546201000090046001600160601b03166005929190612c63565b9392505050565b6009546001600160a01b03163314610fca57604051630f5caa3360e41b815260040160405180910390fd5b6001600160a01b03821660009081526001602081815260408084208151608081018352815460ff81161515825261010090046001600160601b03168185015293810180548351818602810186018552818152929493860193879084015b8282101561106f576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101611027565b50505090825250600291909101546001600160601b031660209091015280519091506110b95760405163eac13dcd60e01b81526001600160a01b03841660048201526024016107d9565b60006110c784610f7c611667565b905060006110d58483612cac565b90506110e081612083565b6001600160a01b03861660009081526005602052604090208054600c90611118908490600160601b90046001600160601b0316613fb6565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506111826111516000546001600160a01b031690565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908361280a565b604080516001600160a01b0387168152602081018390527ff3136d14e8fd8ddb090effdbecb5d9547b6e17d9006ef9c25ca5b1e00dbfe51791015b60405180910390a15050505050565b6111d4610742565b156111fc57604051635185386160e11b815260016004820152600060248201526044016107d9565b600c546001600160a01b0316611225576040516306cf420760e31b815260040160405180910390fd5b600080600061123333612cc2565b600c549295509093509150611260906001600160a01b031682611256858761401a565b610901919061401a565b600c546001600160a01b03166331f5be158261127c858761401a565b611286919061401a565b33888860405160200161129b939291906140c7565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016112c79291906140ea565b600060405180830381600087803b1580156112e157600080fd5b505af11580156112f5573d6000803e3d6000fd5b505050507f667838b33bdc898470de09e0e746990f2adc11b965b7fe6828e502ebc39e04343384848489896040516111bd96959493929190614103565b61133a6128c3565b600854600160701b900463ffffffff16156113675760405162dc149f60e41b815260040160405180910390fd5b61139260017f0000000000000000000000000000000000000000000000000000000000000000612e33565b6113c76001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612b1d565b610a7360057f00000000000000000000000000000000000000000000000000000000000000008484612eb3565b6113fc6128c3565b6001600160a01b0381166114235760405163f6b2911f60e01b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0383169081179091556040519081527f79f74fd5964b6943d8a1865abfb7f668c92fa3f32c0a2e3195da7d0946703ad790602001610bfb565b6001600160a01b03811660009081526001602052604081205461010090046001600160601b03168082036114a85750600092915050565b6001600160a01b03831660009081526001602052604090205460ff16156114d25750600092915050565b6001600160a01b0383166000908152600560205260409020546001600160601b031661153d611521837f0000000000000000000000000000000000000000000000000000000000000000612f82565b6002546201000090046001600160601b03165b60059190612f98565b610f989190614007565b61154f6128c3565b600854600160701b900463ffffffff16158015906115725750611570610742565b155b1561159a57604051635185386160e11b815260006004820152600160248201526044016107d9565b610a7360018383612fbe565b6115ae6120b1565b64e8d4a510008110156115db57604051631d820b1760e01b815264e8d4a5100060048201526024016107d9565b60006115ec64e8d4a5100083613ff3565b90508015611601576115fe8183614007565b91505b3360009081526001602052604090205460ff1615611628576116233383613212565b611632565b611632338361348e565b610a736001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612b1d565b600254600090610768906201000090046001600160601b03167f000000000000000000000000000000000000000000000000000000000000000061376f565b6116ae6120b1565b3360009081526001602081815260408084208151608081018352815460ff81161515825261010090046001600160601b03168185015293810180548351818602810186018552818152929493860193879084015b8282101561174a576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101611702565b50505090825250600291909101546001600160601b031660209091015280519091501561178a5760405163b7195bcb60e01b815260040160405180910390fd5b60006117c661152183602001516001600160601b03167f0000000000000000000000000000000000000000000000000000000000000000612f82565b33600090815260056020526040812054919250906117ed906001600160601b031683614007565b90506117f882612083565b33600081815260056020526040902080546001600160601b0319166001600160601b03939093169290921790915561185b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908361280a565b60408051338152602081018390527f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724191016108a4565b6118996128c3565b6118a1610742565b156118c957604051635185386160e11b815260016004820152600060248201526044016107d9565b6002546118e4906201000090046001600160601b0316610c62565b611392610c75611667565b6004546000906118fd610980565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119859190614144565b61198f9190614007565b6107689190614007565b6119a16120b1565b33600090815260016020819052604082200180549091036119d757604051630f1ed8ad60e21b81523360048201526024016107d9565b60008060005b8354811015611a9d5760008482815481106119fa576119fa61402d565b9060005260206000209060020201905042858381548110611a1d57611a1d61402d565b90600052602060002090600202016001015411611a84578054611a49906001600160601b03168561401a565b8154600480549296506001600160601b0390911691600090611a6c908490614007565b90915550839050611a7c81614043565b935050611a8a565b50611a9d565b5080611a9581614043565b9150506119dd565b508015611b995760005b8354611ab4908390614007565b811015611b405783611ac6838361401a565b81548110611ad657611ad661402d565b9060005260206000209060020201848281548110611af657611af661402d565b60009182526020909120825460029092020180546001600160601b0319166001600160601b0390921691909117815560019182015491015580611b3881614043565b915050611aa7565b5060005b81811015611b975783805480611b5c57611b5c61415d565b60008281526020812060026000199093019283020180546001600160601b031916815560010155905580611b8f81614043565b915050611b44565b505b8115611bd357611bd36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338461280a565b60408051338152602081018490527fbb6ad7a7bb63a1746b89ec2f2339de4e0f983ef7e7b101c8c4f716c08c2a711491016108a4565b611c116128c3565b600a546001600160a01b0316611c3a576040516306cf420760e31b815260040160405180910390fd5b600b54611c4a9062093a8061401a565b421015611c6a57604051631decfebb60e31b815260040160405180910390fd5b600a8054600c80546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527ffa33c052bbee754f3c0482a89962daffe749191fa33c696a61e947fbfd68bd84906020015b60405180910390a1565b611cd16128c3565b6001600160a01b038116611d365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d9565b611d3f816129df565b50565b606080600060016000016000856001600160a01b03166001600160a01b03168152602001908152602001600020600101805480602002602001604051908101604052809291908181526020016000905b82821015611dda576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101611d92565b505050509050805167ffffffffffffffff811115611dfa57611dfa614173565b604051908082528060200260200182016040528015611e23578160200160208202803683370190505b509250805167ffffffffffffffff811115611e4057611e40614173565b604051908082528060200260200182016040528015611e69578160200160208202803683370190505b50915060005b8151811015611f1557818181518110611e8a57611e8a61402d565b602002602001015160000151848281518110611ea857611ea861402d565b60200260200101906001600160601b031690816001600160601b031681525050818181518110611eda57611eda61402d565b602002602001015160200151838281518110611ef857611ef861402d565b602090810291909101015280611f0d81614043565b915050611e6f565b5050915091565b60028301546001600160601b0316821015611f4d57604051630f9e1c3b60e11b8152600481018390526024016107d9565b6002830154600160601b90046001600160601b0316811015611f855760405163bc91aa3360e01b8152600481018290526024016107d9565b60028301546001600160601b03168214611ff857611fa282612083565b6002840180546001600160601b0319166001600160601b03929092169190911790556040518281527f7f4f497e086b2eb55f8a9885ba00d33399bbe0ebcb92ea092834386435a1b9c09060200160405180910390a15b6002830154600160601b90046001600160601b0316811461207e5761201c81612083565b6002840180546001600160601b0392909216600160601b026bffffffffffffffffffffffff60601b199092169190911790556040518181527fb5f554e5ef00806bace1edbb84186512ebcefa2af7706085143f501f29314df7906020016108a4565b505050565b60006001600160601b038211156120ad5760405163408ba96f60e11b815260040160405180910390fd5b5090565b600054600160a01b900460ff1615610a555760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107d9565b6001600160a01b03831660009081526001602081815260408084208151608081018352815460ff81161515825261010090046001600160601b03168185015293810180548351818602810186018552818152879687969095860193919290879084015b828210156121a9576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101612161565b50505090825250600291909101546001600160601b0316602090910152905060008590036121f557604051637ece672b60e11b81526001600160a01b03871660048201526024016107d9565b8481602001516001600160601b0316101561223457602081015160405163477d28dd60e01b81526001600160601b0390911660048201526024016107d9565b60025461224f906201000090046001600160601b0316610c62565b61225a610c75611667565b80511561250c577f000000000000000000000000000000000000000000000000000000000000000085146122ac57604051633ac3109f60e01b81526001600160a01b03871660048201526024016107d9565b60608101516001600160601b0316156122e357604051634ed4c4c760e11b81526001600160a01b03871660048201526024016107d9565b60006122f187610f7c611667565b90506122fc86612083565b60028054600e9061231e908490600160701b90046001600160601b031661407e565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555061234b86612083565b6001600160a01b0388166000908152600160208190526040909120805490919061238490849061010090046001600160601b031661407e565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555084612484576123b686612083565b6001600160601b0316600160030160008282546123d3919061401a565b90915550506001600160a01b038716600090815260016020819052604091829020825180840190935201908061240889612083565b6001600160601b031681526020016124407f00000000000000000000000000000000000000000000000000000000000000004261401a565b90528154600180820184556000938452602093849020835160029093020180546001600160601b0319166001600160601b0390931692909217825591909201519101555b600680546001919060009061249d90849060ff16614189565b825461010092830a60ff818102199092169290911602179091556006546001600160a01b038a16600090815260056020526040812080546bffffffffffffffffffffffff60601b1916939092046001600160601b0316600160601b029290921790559450909250612802915050565b6001600160a01b0386166000908152600560209081526040822054908301516001600160601b03918216916125669161152191167f0000000000000000000000000000000000000000000000000000000000000000612f82565b6125709190614007565b905061257b86612083565b60028054819061259b9084906201000090046001600160601b031661407e565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506125c886612083565b6001600160a01b0388166000908152600160208190526040909120805490919061260190849061010090046001600160601b031661407e565b82546001600160601b0391821661010093840a90810290830219909116179092556001600160a01b038a16600090815260016020526040812054919091049091169003905061268557600780546001919060009061266690849063ffffffff166141a2565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b846127615761269386612083565b6001600160601b0316600160030160008282546126b0919061401a565b90915550506001600160a01b03871660009081526001602081905260409182902082518084019093520190806126e589612083565b6001600160601b0316815260200161271d7f00000000000000000000000000000000000000000000000000000000000000004261401a565b90528154600180820184556000938452602093849020835160029093020180546001600160601b0319166001600160601b0390931692909217825591909201519101555b6001600160a01b0387166000908152600160205260409020546127bf906127ba906115219061010090046001600160601b03167f0000000000000000000000000000000000000000000000000000000000000000612f82565b612083565b6001600160a01b038816600090815260056020526040812080546001600160601b0319166001600160601b03939093169290921790915590935091506128029050565b935093915050565b6040516001600160a01b03831660248201526044810182905261207e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261377b565b60408051608081018252600183015460ff8082161515835261010082041660208301526001600160601b036201000082048116938301849052600160701b9091041660608201819052600092610f98919061401a565b6000546001600160a01b03163314610a555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d9565b61292561384d565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001611cbf565b612975610742565b610a5557604051635185386160e11b815260006004820152600160248201526044016107d9565b6129a46120b1565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586129553390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612a3c6127ba83836138a6565b6002830180546001600160601b0392909216640100000000026fffffffffffffffffffffffff0000000019909216919091179055612a81612a7c836139a6565b6139c5565b6002909201805463ffffffff93909316600160801b0263ffffffff60801b199093169290921790915550565b612abb6127ba8484846139ec565b6001840180546001600160601b039290921661010002610100600160681b0319909216919091179055612af0612a7c846139a6565b6001909301805463ffffffff94909416600160681b0263ffffffff60681b19909416939093179092555050565b6040516001600160a01b0380851660248301528316604482015260648101829052612b559085906323b872dd60e01b90608401612836565b50505050565b6003840154600090849042600160501b90910463ffffffff161115612bb7576003860154612b97904290600160501b900463ffffffff16614007565b6003870154612bb2919069ffffffffffffffffffff166141bf565b612bba565b60005b612bc4919061401a565b905081831015612be65760405162da056d60e81b815260040160405180910390fd5b612bf3612a7c844261401a565b60038601805463ffffffff92909216600160501b026dffffffff0000000000000000000019909216919091179055612c33612c2e84836141d6565b613af7565b600395909501805469ffffffffffffffffffff191669ffffffffffffffffffff9096169590951790945550505050565b6001600160a01b038316600090815260208590526040812054600160601b90046001600160601b0316612c97868585613b24565b612ca19190614007565b90505b949350505050565b6000818310612cbb5781610f98565b5090919050565b6001600160a01b03811660009081526001602081815260408084208151608081018352815460ff81161515825261010090046001600160601b031681850152938101805483518186028101860185528181528796879687969195949186019390879084015b82821015612d6f576000848152602090819020604080518082019091526002850290910180546001600160601b03168252600190810154828401529083529092019101612d27565b50505090825250600291909101546001600160601b039081166020928301529082015191925016600003612dc157604051637256ef3960e11b81526001600160a01b03861660048201526024016107d9565b60608101516001600160601b031615612df857604051634ed4c4c760e11b81526001600160a01b03861660048201526024016107d9565b600080612e148784602001516001600160601b031660016120fe565b6020909401516001600160601b03169650945091925050509193909250565b6001820154610100900460ff16811115612e7657600182015460405163e709379960e01b815261010090910460ff166004820152602481018290526044016107d9565b6001828101805460ff191690911790556040517fded6ebf04e261e1eb2f3e3b268a2e6aee5b478c15b341eba5cf18b9bc80c2e6390600090a15050565b6000612ebe426139c5565b60038601805463ffffffff60701b1916600160701b63ffffffff84169081029190911790915560018701805463ffffffff60681b1916600160681b830217905560028701805463ffffffff60801b1916600160801b9092029190911790559050612f2a85848487612b5b565b60038501546040805185815263ffffffff600160701b840481166020830152600160501b909304909216908201527f4398f7e311b2f8164ce7d424166e6e84fd9a74adda069e902beead8e4eb737b8906060016111bd565b6000612f8e838361376f565b610f989084614007565b600064e8d4a51000612faa85846138a6565b612fb490856141bf565b612ca491906141d6565b60005b818110156131ce57836000848484818110612fde57612fde61402d565b9050602002016020810190612ff39190613e0a565b6001600160a01b0316815260208101919091526040016000205460ff1615613060578282828181106130275761302761402d565b905060200201602081019061303c9190613e0a565b604051625290b360e11b81526001600160a01b0390911660048201526024016107d9565b600084818585858181106130765761307661402d565b905060200201602081019061308b9190613e0a565b6001600160a01b0316815260208101919091526040016000205461010090046001600160601b03161115613105578282828181106130cb576130cb61402d565b90506020020160208101906130e09190613e0a565b60405163602d4d1160e01b81526001600160a01b0390911660048201526024016107d9565b600184600085858581811061311c5761311c61402d565b90506020020160208101906131319190613e0a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d83838381811061318c5761318c61402d565b90506020020160208101906131a19190613e0a565b6040516001600160a01b03909116815260200160405180910390a1806131c681614043565b915050612fc1565b506131d881613b31565b60018401546131ef9190610100900460ff166141ea565b6001909301805460ff949094166101000261ff0019909416939093179092555050565b6001600160a01b0382166000908152600160205260408120805490916101009091046001600160601b031690613248848361401a565b90507f00000000000000000000000000000000000000000000000000000000000000008110156132ad57604051631d820b1760e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526024016107d9565b7f000000000000000000000000000000000000000000000000000000000000000081111561331b576132ff7f000000000000000000000000000000000000000000000000000000000000000082614007565b604051631728673b60e31b81526004016107d991815260200190565b816000036133b95761332e610c75611667565b60065460ff16600081900361334f5760068054610100600160681b03191690555b61335a8160016141ea565b6006805460ff191660ff9290921691909117908190556001600160a01b038716600090815260056020526040902080546bffffffffffffffffffffffff60601b19166101009092046001600160601b0316600160601b02919091179055505b6133c284612083565b60028054600e906133e4908490600160701b90046001600160601b0316613fb6565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555061341181612083565b6001600160a01b03861660008181526001602090815260409182902080546001600160601b039590951661010002610100600160681b03199095169490941790935580519182529181018690529081018290527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90906060016111bd565b61349661296d565b6001600160a01b03821660009081526001602052604081205461010090046001600160601b0316906134c8838361401a565b90507f000000000000000000000000000000000000000000000000000000000000000081101561352d57604051631d820b1760e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526024016107d9565b600354600160601b90046001600160601b031680821115613552576132ff8382614007565b600061355e6001613b55565b90508085111561358457604051631728673b60e31b8152600481018290526024016107d9565b60025461359f906201000090046001600160601b0316610c62565b6135aa610c75611667565b836000036135ed5760078054600191906000906135ce90849063ffffffff16614203565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b6000613619867f0000000000000000000000000000000000000000000000000000000000000000612f82565b905061363b6127ba826115346002546001600160601b03620100009091041690565b6001600160a01b0388166000908152600560205260408120805490919061366c9084906001600160601b0316613fb6565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555061369986612083565b6002805481906136b99084906201000090046001600160601b0316613fb6565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506136e684612083565b6001600160a01b03881660008181526001602090815260409182902080546001600160601b039590951661010002610100600160681b03199095169490941790935580519182529181018890529081018590527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee909060600160405180910390a150505050505050565b6000610f9882846141d6565b60006137d0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613bb19092919063ffffffff16565b80519091501561207e57808060200190518101906137ee919061405c565b61207e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107d9565b600054600160a01b900460ff16610a555760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016107d9565b6000816000036138cc5750600282015464010000000090046001600160601b0316610c23565b600383015460009042600160501b90910463ffffffff16111561390a57600284015461390590600160801b900463ffffffff1642614007565b613935565b600284015460038501546139359163ffffffff600160801b909104811691600160501b900416614007565b600385015490915061397590849064e8d4a510009061396190859069ffffffffffffffffffff166141bf565b61396b91906141bf565b6127ba91906141d6565b6002850154613995919064010000000090046001600160601b0316613fb6565b6001600160601b0316949350505050565b6003810154600090610c2390600160501b900463ffffffff1642612cac565b600063ffffffff8211156120ad5760405163408ba96f60e11b815260040160405180910390fd5b600081600003613a0f5750600183015461010090046001600160601b0316610f98565b600384015460009042600160501b90910463ffffffff161115613a4d576001850154613a4890600160681b900463ffffffff1642614007565b613a78565b60018501546003860154613a789163ffffffff600160681b909104811691600160501b900416614007565b600180870154919250613ac891613a949160ff90911690613bc0565b600387015485908790613ab490869069ffffffffffffffffffff166141bf565b613abe91906141bf565b61396b91906141d6565b6001860154613ae5919061010090046001600160601b0316613fb6565b6001600160601b031695945050505050565b600069ffffffffffffffffffff8211156120ad5760405163408ba96f60e11b815260040160405180910390fd5b6000612ca48484846139ec565b600060ff8211156120ad5760405163408ba96f60e11b815260040160405180910390fd5b60408051608081018252600183015460ff8082161515835261010082041660208301526001600160601b036201000082048116938301849052600160701b909104811660608301526002840154600093610f9892909116614007565b6060612ca48484600085613bcf565b6000818311612cbb5781610f98565b606082471015613c305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107d9565b600080866001600160a01b03168587604051613c4c9190614220565b60006040518083038185875af1925050503d8060008114613c89576040519150601f19603f3d011682016040523d82523d6000602084013e613c8e565b606091505b5091509150613c9f87838387613caa565b979650505050505050565b60608315613d19578251600003613d12576001600160a01b0385163b613d125760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d9565b5081612ca4565b612ca48383815115613d2e5781518083602001fd5b8060405162461bcd60e51b81526004016107d99190613d98565b60005b83811015613d63578181015183820152602001613d4b565b50506000910152565b60008151808452613d84816020860160208601613d48565b601f01601f19169290920160200192915050565b602081526000610f986020830184613d6c565b80356001600160a01b0381168114613dc257600080fd5b919050565b60008060408385031215613dda57600080fd5b613de383613dab565b946020939093013593505050565b600060208284031215613e0357600080fd5b5035919050565b600060208284031215613e1c57600080fd5b610f9882613dab565b60008060408385031215613e3857600080fd5b50508035926020909101359150565b60008060208385031215613e5a57600080fd5b823567ffffffffffffffff80821115613e7257600080fd5b818501915085601f830112613e8657600080fd5b813581811115613e9557600080fd5b866020828501011115613ea757600080fd5b60209290920196919550909350505050565b60008060208385031215613ecc57600080fd5b823567ffffffffffffffff80821115613ee457600080fd5b818501915085601f830112613ef857600080fd5b813581811115613f0757600080fd5b8660208260051b8501011115613ea757600080fd5b604080825283519082018190526000906020906060840190828701845b82811015613f5e5781516001600160601b031684529284019290840190600101613f39565b5050508381038285015284518082528583019183019060005b81811015613f9357835183529284019291840191600101613f77565b5090979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160601b03818116838216019080821115613fd657613fd6613fa0565b5092915050565b634e487b7160e01b600052601260045260246000fd5b60008261400257614002613fdd565b500690565b81810381811115610c2357610c23613fa0565b80820180821115610c2357610c23613fa0565b634e487b7160e01b600052603260045260246000fd5b60006001820161405557614055613fa0565b5060010190565b60006020828403121561406e57600080fd5b81518015158114610f9857600080fd5b6001600160601b03828116828216039080821115613fd657613fd6613fa0565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201526000612ca160408301848661409e565b828152604060208201526000612ca46040830184613d6c565b6001600160a01b038716815285602082015284604082015283606082015260a06080820152600061413860a08301848661409e565b98975050505050505050565b60006020828403121561415657600080fd5b5051919050565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60ff8281168282160390811115610c2357610c23613fa0565b63ffffffff828116828216039080821115613fd657613fd6613fa0565b8082028115828204841417610c2357610c23613fa0565b6000826141e5576141e5613fdd565b500490565b60ff8181168382160190811115610c2357610c23613fa0565b63ffffffff818116838216019080821115613fd657613fd6613fa0565b60008251614232818460208701613d48565b919091019291505056fea264697066735822122067f9409ccc761037565889b633bcf8dbe7ca81bfcb449cac6efdacfef668965b64736f6c63430008120033", "sourceMap": "981:30207:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20923:152;21030:11;:38;;;;-1:-1:-1;;;;;21030:38:0;20923:152;;;160:25:127;;;148:2;133:18;20923:152:0;;;;;;;;18041:193;18189:12;:36;18155:24;;-1:-1:-1;;;18189:36:0;;-1:-1:-1;;;;;18189:36:0;18041:193;;;;370:25:127;;;426:2;411:18;;404:34;;;;343:18;18041:193:0;196:248:127;17872:134:0;17974:12;:24;-1:-1:-1;;;;;17974:24:0;17872:134;;5994:112;6077:22;;;;;;;;;;;-1:-1:-1;;;6077:22:0;;;;5994:112;;;;6077:22;5994:112;:::i;9380:124::-;9481:16;;-1:-1:-1;;;;;9481:16:0;9380:124;;;-1:-1:-1;;;;;1369:55:127;;;1351:74;;1339:2;1324:18;9380:124:0;1205:226:127;17703:134:0;;;:::i;:::-;;;1601:14:127;;1594:22;1576:41;;1564:2;1549:18;17703:134:0;1436:187:127;18269:123:0;18365:20;18269:123;;11483:520;;;;;;:::i;:::-;;:::i;:::-;;14413:531;;;;;;:::i;:::-;;:::i;22734:111::-;22827:11;;-1:-1:-1;;;;;22827:11:0;22734:111;;20433:145;20538:17;:32;;;20433:145;;20754:134;;;:::i;21928:625::-;;;;;;:::i;:::-;;:::i;9186:98::-;;;:::i;6485:238::-;;;;;;:::i;:::-;;:::i;14979:204::-;;;:::i;9052:94::-;;;:::i;18427:179::-;18544:22;;;-1:-1:-1;;;18544:22:0;;;;;-1:-1:-1;;;18577:20:0;;;18427:179;;1615:84:44;1662:4;1685:7;-1:-1:-1;;;1685:7:44;;;;1615:84;;18797:141:0;18905:26;18797:141;;9542:671;;;;;;:::i;:::-;;:::i;17535:133::-;;;;;;:::i;:::-;;:::i;1831:101:37:-;;;:::i;7820:522:0:-;;;;;;:::i;:::-;;:::i;17359:141::-;;;;;;:::i;:::-;-1:-1:-1;;;;;17459:21:0;17433:7;17459:21;;;:5;:21;;;;;:34;;;;-1:-1:-1;;;;;17459:34:0;;17359:141;18641:121;18742:12;;;;18641:121;;12042:566;;;;;;:::i;:::-;;:::i;19728:430::-;;;;;;:::i;:::-;;:::i;12647:763::-;;;;;;:::i;:::-;;:::i;10765:626::-;;;;;;:::i;:::-;;:::i;1201:85:37:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:37;1201:85;;6763:498:0;;;;;;:::i;:::-;;:::i;13449:159::-;;;;;;:::i;:::-;-1:-1:-1;;;;;13562:21:0;13536:7;13562:21;;;:5;:21;;;;;:39;;;-1:-1:-1;;;;;13562:39:0;;13449:159;6210:235;;;;;;:::i;:::-;;:::i;19192:501::-;;;;;;:::i;:::-;;:::i;8584:428::-;;;;;;:::i;:::-;;:::i;13692:686::-;;;;;;:::i;:::-;;:::i;20193:205::-;;;:::i;15218:765::-;;;:::i;7301:479::-;;;;;;:::i;:::-;;:::i;22588:111::-;22686:5;22588:111;;18973:184;;;:::i;16018:1306::-;;;:::i;10251:476::-;;;:::i;21110:130::-;21210:23;;21110:130;;20584:135;20677:12;:34;;;20584:135;;2081:198:37;;;;;;:::i;:::-;;:::i;21275:618:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;17703:134::-;17786:11;:18;17763:4;;17786:18;;:44;;;;-1:-1:-1;4549:19:7;;4572:15;-1:-1:-1;;;4549:19:7;;;;;:38;;17808:22:0;17786:44;17779:51;;17703:134;:::o;11483:520::-;31126:11;;-1:-1:-1;;;;;31126:11:0;31112:10;:25;31108:59;;31146:21;;-1:-1:-1;;;31146:21:0;;;;;;;;;;;31108:59;-1:-1:-1;;;;;11632:21:0;::::1;11586:43;11632:21:::0;;;:5:::1;:21;::::0;;;;11668:24;;::::1;;11663:106;;11715:43;::::0;-1:-1:-1;;;11715:43:0;;-1:-1:-1;;;;;1369:55:127;;11715:43:0::1;::::0;::::1;1351:74:127::0;1324:18;;11715:43:0::1;;;;;;;;11663:106;11782:26:::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;11782:26:0::1;-1:-1:-1::0;;11778:119:0::1;;;11840:46;::::0;-1:-1:-1;;;11840:46:0;;::::1;::::0;::::1;160:25:127::0;;;133:18;;11840:46:0::1;14:177:127::0;11778:119:0::1;11941:18;:6;:16;:18::i;:::-;11906:31;::::0;::::1;:53:::0;;:31:::1;::::0;:53:::1;::::0;;;-1:-1:-1;;;;;11906:53:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;11906:53:0::1;;;;;-1:-1:-1::0;;;;;11906:53:0::1;;;;;;11974:22;11981:6;11989;11974:22;;;;;;-1:-1:-1::0;;;;;5638:55:127;;;;5620:74;;5725:2;5710:18;;5703:34;5608:2;5593:18;;5446:297;11974:22:0::1;;;;;;;;11576:427;11483:520:::0;;:::o;14413:531::-;1239:19:44;:17;:19::i;:::-;14572:17:0::1;14592:35;1775:4:7;14592:6:0::0;:35:::1;:::i;:::-;14572:55:::0;-1:-1:-1;14641:13:0;;14637:63:::1;;14670:19;14680:9:::0;14670:19;::::1;:::i;:::-;;;14637:63;14711:18;14731:24:::0;14759:32:::1;14765:10;14777:6;14785:5;14759;:32::i;:::-;14710:81:::0;;-1:-1:-1;14710:81:0;-1:-1:-1;14802:61:0::1;14821:10;14833:29;14710:81:::0;;14833:29:::1;:::i;:::-;-1:-1:-1::0;;;;;14802:5:0::1;:18;::::0;:61;:18:::1;:61::i;:::-;14879:58;::::0;;14888:10:::1;6491:74:127::0;;6596:2;6581:18;;6574:34;;;6624:18;;;6617:34;;;6682:2;6667:18;;6660:34;;;14879:58:0::1;::::0;6478:3:127;6463:19;14879:58:0::1;;;;;;;14488:456;;;14413:531:::0;:::o;20754:134::-;20826:7;20852:29;:5;:27;:29::i;21928:625::-;22108:10;21997:25;22094;;;:5;:25;;;;;;;:42;22150:23;;:28;;22146:42;;-1:-1:-1;22187:1:0;;21928:625;-1:-1:-1;;21928:625:0:o;22146:42::-;22204:9;22199:348;22223:23;;22219:27;;22199:348;;;22267:54;22324:16;22341:1;22324:19;;;;;;;;:::i;:::-;;;;;;;;;;;22267:76;;22400:15;22361:16;22378:1;22361:19;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;;:54;22357:180;;22456:22;;22435:43;;-1:-1:-1;;;;;22456:22:0;22435:43;;:::i;:::-;;;22357:180;;;22517:5;;;22357:180;-1:-1:-1;22248:3:0;;;;:::i;:::-;;;;22199:348;;;;22024:529;21928:625;;;:::o;9186:98::-;1094:13:37;:11;:13::i;:::-;9267:10:0::1;:8;:10::i;:::-;9186:98::o:0;6485:238::-;1094:13:37;:11;:13::i;:::-;30786:11:0::1;:9;:11::i;:::-;6662:54:::2;:5;6679:11:::0;6692:23;6662:16:::2;:54::i;:::-;6485:238:::0;;:::o;14979:204::-;1239:19:44;:17;:19::i;:::-;15048:13:0::1;:11;:13::i;:::-;15089:10;15127:1;15075:25:::0;;;:5:::1;:25;::::0;;;;;;;:42:::1;:49:::0;:53;15071:106:::1;;15144:22;:20;:22::i;9052:94::-:0;1094:13:37;:11;:13::i;:::-;9131:8:0::1;:6;:8::i;9542:671::-:0;1094:13:37;:11;:13::i;:::-;-1:-1:-1;;;;;9667:27:0;::::1;;:32:::0;;:68:::1;;-1:-1:-1::0;;;;;;9703:32:0;::::1;9730:4;9703:32;9667:68;:131;;;-1:-1:-1::0;9755:24:0::1;::::0;-1:-1:-1;;;;;9755:43:0;;::::1;:24:::0;::::1;:43;9667:131;:170;;;-1:-1:-1::0;9802:16:0::1;::::0;-1:-1:-1;;;;;9802:35:0;;::::1;:16:::0;::::1;:35;9667:170;:272;;;-1:-1:-1::0;9858:81:0::1;::::0;-1:-1:-1;;;9858:81:0;;-1:-1:-1;;;9858:81:0::1;::::0;::::1;7121:52:127::0;-1:-1:-1;;;;;9858:42:0;::::1;::::0;::::1;::::0;7094:18:127;;9858:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9857:82;9667:272;9650:356;;;9971:24;;-1:-1:-1::0;;;9971:24:0::1;;;;;;;;;;;9650:356;10016:16;:29:::0;;-1:-1:-1;;;;;;10016:29:0;;::::1;::::0;;;10055:24:::1;:42:::0;;-1:-1:-1;;;;;10055:42:0;::::1;::::0;::::1;::::0;::::1;::::0;;10136:15:::1;10107:26;:44:::0;10166:40:::1;::::0;1351:74:127;;;10166:40:0::1;::::0;1339:2:127;1324:18;10166:40:0::1;;;;;;;;9542:671:::0;:::o;17535:133::-;-1:-1:-1;;;;;7552:20:9;;17613:4:0;7552:20:9;;;17636:5:0;7552:20:9;;;;;:31;;;17636:25:0;17629:32;17535:133;-1:-1:-1;;17535:133:0:o;1831:101:37:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;7820:522:0:-:0;1094:13:37;:11;:13::i;:::-;30786:11:0::1;:9;:11::i;:::-;21030::::0;:38;7943:63:::2;::::0;21030:38;;;-1:-1:-1;;;;;21030:38:0;7974:31:::2;7943:7;::::0;:30:::2;:63::i;:::-;8016:96;8053:25;:23;:25::i;:::-;21030:11:::0;:38;;;;-1:-1:-1;;;;;21030:38:0;8016:7:::2;::::0;:96;:36:::2;:96::i;:::-;8123:57;-1:-1:-1::0;;;;;8123:5:0::2;:22;8146:10;8166:4;8173:6:::0;8123:22:::2;:57::i;:::-;8191:65;:7;8213:6:::0;8221:14;8237:18:::2;8191:21;:65::i;:::-;8272:63;8294:6:::0;8302:32:::2;8320:14:::0;8302:15:::2;:32;:::i;:::-;8272:63;::::0;;370:25:127;;;426:2;411:18;;404:34;;;;343:18;8272:63:0::2;;;;;;;7820:522:::0;;:::o;12042:566::-;31126:11;;-1:-1:-1;;;;;31126:11:0;31112:10;:25;31108:59;;31146:21;;-1:-1:-1;;;31146:21:0;;;;;;;;;;;31108:59;-1:-1:-1;;;;;12193:21:0;::::1;12147:43;12193:21:::0;;;:5:::1;:21;::::0;;;;12229:24;;::::1;;12224:106;;12276:43;::::0;-1:-1:-1;;;12276:43:0;;-1:-1:-1;;;;;1369:55:127;;12276:43:0::1;::::0;::::1;1351:74:127::0;1324:18;;12276:43:0::1;1205:226:127::0;12224:106:0::1;12343:31;::::0;::::1;::::0;-1:-1:-1;;;;;12343:31:0::1;:40:::0;-1:-1:-1;12339:161:0::1;;;12457:31;::::0;::::1;::::0;12406:83:::1;::::0;-1:-1:-1;;;12406:83:0;;-1:-1:-1;;;;;12457:31:0;;::::1;12406:83;::::0;::::1;7611:58:127::0;7584:18;;12406:83:0::1;7466:209:127::0;12339:161:0::1;12544:18;:6;:16;:18::i;:::-;12509:31;::::0;::::1;:53:::0;;:31:::1;::::0;:53:::1;::::0;;;-1:-1:-1;;;;;12509:53:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;12509:53:0::1;;;;;-1:-1:-1::0;;;;;12509:53:0::1;;;;;;12577:24;12586:6;12594;12577:24;;;;;;-1:-1:-1::0;;;;;5638:55:127;;;;5620:74;;5725:2;5710:18;;5703:34;5608:2;5593:18;;5446:297;19728:430:0;-1:-1:-1;;;;;19877:21:0;;19813:7;19877:21;;;:5;:21;;;;;;;;19832:66;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19832:66:0;;;;;;;;;;;;;;;;;;;;;;;;19813:7;;19832:66;19877:21;;19832:66;;;;;;;19813:7;;19832:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19832:66:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19832:66:0;;;-1:-1:-1;19832:66:0;;;;;;-1:-1:-1;;;;;19832:66:0;;;;;;19913:24;;19832:66;;-1:-1:-1;19908:39:0;;-1:-1:-1;19946:1:0;;19728:430;-1:-1:-1;;19728:430:0:o;19908:39::-;19961:13;:26;;;-1:-1:-1;;;;;19961:31:0;19991:1;19961:31;19957:45;;-1:-1:-1;20001:1:0;;19728:430;-1:-1:-1;;19728:430:0:o;19957:45::-;20019:132;20075:6;20083:25;:23;:25::i;:::-;21030:11;:38;;;;-1:-1:-1;;;;;21030:38:0;20019:7;;:132;;:42;:132::i;:::-;20012:139;19728:430;-1:-1:-1;;;19728:430:0:o;12647:763::-;31126:11;;-1:-1:-1;;;;;31126:11:0;31112:10;:25;31108:59;;31146:21;;-1:-1:-1;;;31146:21:0;;;;;;;;;;;31108:59;-1:-1:-1;;;;;12812:21:0;::::1;12767:42;12812:21:::0;;;:5:::1;:21;::::0;;;;;;;12767:66;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;;;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;12767:66:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;;12812:21;;12767:66;;;;:42;;:66;::::1;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;12767:66:0::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;-1:-1:-1::0;;;12767:66:0;;;-1:-1:-1;12767:66:0::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;12767:66:0::1;;::::0;;::::1;::::0;12848:24;;12767:66;;-1:-1:-1;12843:106:0::1;;12895:43;::::0;-1:-1:-1;;;12895:43:0;;-1:-1:-1;;;;;1369:55:127;;12895:43:0::1;::::0;::::1;1351:74:127::0;1324:18;;12895:43:0::1;1205:226:127::0;12843:106:0::1;12958:21;12982:132;13038:6;13046:25;:23;:25::i;12982:132::-;12958:156;;13158:22;13183:31;13192:6;13200:13;13183:8;:31::i;:::-;13158:56;;13260:26;:14;:24;:26::i;:::-;-1:-1:-1::0;;;;;13224:22:0;::::1;:14;:22:::0;;;:7:::1;:22;::::0;;;;:62;;:32:::1;::::0;:62:::1;::::0;;;-1:-1:-1;;;13224:62:0;::::1;-1:-1:-1::0;;;;;13224:62:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;13224:62:0::1;;;;;-1:-1:-1::0;;;;;13224:62:0::1;;;;;;13297:43;13316:7;1247::37::0;1273:6;-1:-1:-1;;;;;1273:6:37;;1201:85;13316:7:0::1;-1:-1:-1::0;;;;;13297:5:0::1;:18;::::0;13325:14;13297:18:::1;:43::i;:::-;13356:47;::::0;;-1:-1:-1;;;;;5638:55:127;;5620:74;;5725:2;5710:18;;5703:34;;;13356:47:0::1;::::0;5593:18:127;13356:47:0::1;;;;;;;;12757:653;;;12647:763:::0;;:::o;10765:626::-;30930:10;:8;:10::i;:::-;30926:68;;;30949:45;;-1:-1:-1;;;30949:45:0;;30982:4;30949:45;;;8038:41:127;30988:5:0;8095:18:127;;;8088:50;8011:18;;30949:45:0;7876:268:127;30926:68:0;10861:16:::1;::::0;-1:-1:-1;;;;;10861:16:0::1;10857:67;;10900:24;;-1:-1:-1::0;;;10900:24:0::1;;;;;;;;;;;10857:67;10936:14;10952:18:::0;10972:24:::1;11000:17;11006:10;11000:5;:17::i;:::-;11047:16;::::0;10935:82;;-1:-1:-1;10935:82:0;;-1:-1:-1;10935:82:0;-1:-1:-1;11028:85:0::1;::::0;-1:-1:-1;;;;;11047:16:0::1;10935:82:::0;11073:19:::1;10935:82:::0;;11073:19:::1;:::i;:::-;:38;;;;:::i;11028:85::-;11174:16;::::0;-1:-1:-1;;;;;11174:16:0::1;11157:46;11247:16:::0;11225:19:::1;11234:10:::0;11225:6;:19:::1;:::i;:::-;:38;;;;:::i;:::-;11277:10;11289:4;;11266:28;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11157:147;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11320:64;11329:10;11341:6;11349:10;11361:16;11379:4;;11320:64;;;;;;;;;;;:::i;6763:498::-:0;1094:13:37;:11;:13::i;:::-;6875:22:0;;-1:-1:-1;;;6875:22:0;::::1;;;:27:::0;6871:60:::1;;6911:20;;-1:-1:-1::0;;;6911:20:0::1;;;;;;;;;;;6871:60;6942:37;:5;6954:24;6942:11;:37::i;:::-;7123:57;-1:-1:-1::0;;;;;7123:5:0::1;:22;7146:10;7166:4;7173:6:::0;7123:22:::1;:57::i;:::-;7191:63;:7;7211:18;7231:6:::0;7239:14;7191:19:::1;:63::i;6210:235::-:0;1094:13:37;:11;:13::i;:::-;-1:-1:-1;;;;;6310:24:0;::::1;6306:57;;6343:20;;-1:-1:-1::0;;;6343:20:0::1;;;;;;;;;;;6306:57;6373:11;:24:::0;;-1:-1:-1;;;;;;6373:24:0::1;-1:-1:-1::0;;;;;6373:24:0;::::1;::::0;;::::1;::::0;;;6413:25:::1;::::0;1351:74:127;;;6413:25:0::1;::::0;1339:2:127;1324:18;6413:25:0::1;1205:226:127::0;19192:501:0;-1:-1:-1;;;;;19313:21:0;;19271:7;19313:21;;;:5;:21;;;;;:34;;;;-1:-1:-1;;;;;19313:34:0;19361:17;;;19357:31;;-1:-1:-1;19387:1:0;;19192:501;-1:-1:-1;;19192:501:0:o;19357:31::-;-1:-1:-1;;;;;7552:20:9;;7529:4;7552:20;;;19403:5:0;7552:20:9;;;;;:31;;;19399:64:0;;;-1:-1:-1;19451:1:0;;19192:501;-1:-1:-1;;19192:501:0:o;19399:64::-;-1:-1:-1;;;;;19658:22:0;;:14;:22;;;:7;:22;;;;;:27;-1:-1:-1;;;;;19658:27:0;19480:167;19530:74;19563:12;19577:26;19530:32;:74::i;:::-;21030:11;:38;;;;-1:-1:-1;;;;;21030:38:0;19606:31;19480:7;;:167;:36;:167::i;:::-;:206;;;;:::i;8584:428::-;1094:13:37;:11;:13::i;:::-;8845:22:0;;-1:-1:-1;;;8845:22:0;::::1;;;:26:::0;;;;:41:::1;;;8876:10;:8;:10::i;:::-;8875:11;8845:41;8841:124;;;8909:45;::::0;-1:-1:-1;;;8909:45:0;;8942:5:::1;8909:45;::::0;::::1;8038:41:127::0;8949:4:0::1;8095:18:127::0;;;8088:50;8011:18;;8909:45:0::1;7876:268:127::0;8841:124:0::1;8975:30;:5;8995:9:::0;;8975:19:::1;:30::i;13692:686::-:0;1239:19:44;:17;:19::i;:::-;1775:4:7::1;13779:6:0;:35;13775:139;;;13837:66;::::0;-1:-1:-1;;;13837:66:0;;1775:4:7::1;13837:66:0;::::0;::::1;160:25:127::0;133:18;;13837:66:0::1;14:177:127::0;13775:139:0::1;13996:17;14016:35;1775:4:7;14016:6:0::0;:35:::1;:::i;:::-;13996:55:::0;-1:-1:-1;14065:13:0;;14061:63:::1;;14094:19;14104:9:::0;14094:19;::::1;:::i;:::-;;;14061:63;14156:10;7529:4:9::0;7552:20;;;14138:5:0::1;7552:20:9::0;;;;;:31;;;14134:170:0::1;;;14183:36;14200:10;14212:6;14183:16;:36::i;:::-;14134:170;;;14250:43;14274:10;14286:6;14250:23;:43::i;:::-;14314:57;-1:-1:-1::0;;;;;14314:5:0::1;:22;14337:10;14357:4;14364:6:::0;14314:22:::1;:57::i;20193:205::-:0;20324:11;:38;20268:7;;20294:97;;20324:38;;;-1:-1:-1;;;;;20324:38:0;20364:26;20294:29;:97::i;15218:765::-;1239:19:44;:17;:19::i;:::-;15350:10:0::1;15291:42;15336:25:::0;;;:5:::1;:25;::::0;;;;;;;15291:70;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;;;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;15291:70:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;;15336:25;;15291:70;;;;:42;;:70;::::1;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;15291:70:0::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;-1:-1:-1::0;;;15291:70:0;;;-1:-1:-1;15291:70:0::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;15291:70:0::1;;::::0;;::::1;::::0;15375:24;;15291:70;;-1:-1:-1;15371:102:0::1;;;15422:40;;-1:-1:-1::0;;;15422:40:0::1;;;;;;;;;;;15371:102;15483:21;15507:193;15557:88;15590:13;:26;;;-1:-1:-1::0;;;;;15557:88:0::1;15618:26;15557:32;:88::i;15507:193::-;15775:10;15711:22;15760:26:::0;;;:7:::1;:26;::::0;;;;:31;15483:217;;-1:-1:-1;15711:22:0;15736:56:::1;::::0;-1:-1:-1;;;;;15760:31:0::1;15483:217:::0;15736:56:::1;:::i;:::-;15711:81;;15837:25;:13;:23;:25::i;:::-;15818:10;15803:14;:26:::0;;;:7:::1;:26;::::0;;;;:59;;-1:-1:-1;;;;;;15803:59:0::1;-1:-1:-1::0;;;;;15803:59:0;;;::::1;::::0;;;::::1;::::0;;;15873:46:::1;::::0;-1:-1:-1;;;;;15873:5:0::1;:18;::::0;15904:14;15873:18:::1;:46::i;:::-;15935:41;::::0;;15949:10:::1;5620:74:127::0;;5725:2;5710:18;;5703:34;;;15935:41:0::1;::::0;5593:18:127;15935:41:0::1;5446:297:127::0;7301:479:0;1094:13:37;:11;:13::i;:::-;30930:10:0::1;:8;:10::i;:::-;30926:68;;;30949:45;::::0;-1:-1:-1;;;30949:45:0;;30982:4:::1;30949:45;::::0;::::1;8038:41:127::0;30988:5:0::1;8095:18:127::0;;;8088:50;8011:18;;30949:45:0::1;7876:268:127::0;30926:68:0::1;21030:11:::0;:38;7462:63:::2;::::0;21030:38;;;-1:-1:-1;;;;;21030:38:0;7493:31:::2;20923:152:::0;7462:63:::2;7535:96;7572:25;:23;:25::i;18973:184::-:0;19127:23;;19043:7;;19102:22;:20;:22::i;:::-;19069:30;;-1:-1:-1;;;19069:30:0;;19093:4;19069:30;;;1351:74:127;19069:5:0;-1:-1:-1;;;;;19069:15:0;;;;1324:18:127;;19069:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55;;;;:::i;:::-;:81;;;;:::i;16018:1306::-;1239:19:44;:17;:19::i;:::-;16174:10:0::1;16100:57;16160:25:::0;;;:5:::1;:25;::::0;;;;;;:42:::1;16216:23:::0;;16160:42;;16216:28;16212:95:::1;;16253:54;::::0;-1:-1:-1;;;16253:54:0;;16296:10:::1;16253:54;::::0;::::1;1351:74:127::0;1324:18;;16253:54:0::1;1205:226:127::0;16212:95:0::1;16318:25;16357:16:::0;16392:9:::1;16387:443;16411:23:::0;;16407:27;::::1;16387:443;;;16455:54;16512:16;16529:1;16512:19;;;;;;;;:::i;:::-;;;;;;;;;;;16455:76;;16588:15;16549:16;16566:1;16549:19;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;;:54;16545:275;;16644:22:::0;;16623:43:::1;::::0;-1:-1:-1;;;;;16644:22:0::1;16623:43:::0;::::1;:::i;:::-;16711:22:::0;;16684:23;:49;;16623:43;;-1:-1:-1;;;;;;16711:22:0;;::::1;::::0;::::1;::::0;16684:49:::1;::::0;16711:22;;16684:49:::1;:::i;:::-;::::0;;;-1:-1:-1;16751:10:0;;-1:-1:-1;16751:10:0::1;::::0;::::1;:::i;:::-;;;;16545:275;;;16800:5;;;16545:275;-1:-1:-1::0;16436:3:0;::::1;::::0;::::1;:::i;:::-;;;;16387:443;;;-1:-1:-1::0;16843:12:0;;16839:299:::1;;16876:9;16871:150;16895:23:::0;;:34:::1;::::0;16921:8;;16895:34:::1;:::i;:::-;16891:1;:38;16871:150;;;16976:16:::0;16993:12:::1;16997:8:::0;16993:1;:12:::1;:::i;:::-;16976:30;;;;;;;;:::i;:::-;;;;;;;;;;;16954:16;16971:1;16954:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:52;;:19:::1;::::0;;::::1;;:52:::0;;-1:-1:-1;;;;;;16954:52:0::1;-1:-1:-1::0;;;;;16954:52:0;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;16931:3;::::1;::::0;::::1;:::i;:::-;;;;16871:150;;;;17039:9;17034:94;17058:8;17054:1;:12;17034:94;;;17091:16;:22;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;17091:22:0;;;;;::::1;;::::0;;-1:-1:-1;;;;;;17091:22:0::1;::::0;;::::1;;::::0;;;17068:3;::::1;::::0;::::1;:::i;:::-;;;;17034:94;;;;16839:299;17152:21:::0;;17148:101:::1;;17189:49;-1:-1:-1::0;;;;;17189:5:0::1;:18;17208:10;17220:17:::0;17189:18:::1;:49::i;:::-;17264:53;::::0;;17287:10:::1;5620:74:127::0;;5725:2;5710:18;;5703:34;;;17264:53:0::1;::::0;5593:18:127;17264:53:0::1;5446:297:127::0;10251:476:0;1094:13:37;:11;:13::i;:::-;10339:24:0::1;::::0;-1:-1:-1;;;;;10339:24:0::1;10335:100;;10400:24;;-1:-1:-1::0;;;10400:24:0::1;;;;;;;;;;;10335:100;10476:26;::::0;10468:44:::1;::::0;10506:6:::1;10468:44;:::i;:::-;10449:15;:64;10445:119;;;10536:17;;-1:-1:-1::0;;;10536:17:0::1;;;;;;;;;;;10445:119;10593:24;::::0;;10574:16:::1;:43:::0;;-1:-1:-1;;;;;10593:24:0;::::1;-1:-1:-1::0;;;;;;10574:43:0;;::::1;::::0;::::1;::::0;;;10627:37;;::::1;::::0;;;10679:41:::1;::::0;1351:74:127;;;10679:41:0::1;::::0;1339:2:127;1324:18;10679:41:0::1;;;;;;;;10251:476::o:0;2081:198:37:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:37;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:37;;10191:2:127;2161:73:37::1;::::0;::::1;10173:21:127::0;10230:2;10210:18;;;10203:30;10269:34;10249:18;;;10242:62;-1:-1:-1;;;10320:18:127;;;10313:36;10366:19;;2161:73:37::1;9989:402:127::0;2161:73:37::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;21275:618:0:-;21393:23;21418:33;21467:56;21526:5;:13;;:21;21540:6;-1:-1:-1;;;;;21526:21:0;-1:-1:-1;;;;;21526:21:0;;;;;;;;;;;;:38;;21467:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21467:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21597:16;:23;21584:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21584:37:0;;21574:47;;21664:16;:23;21650:38;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21650:38:0;;21631:57;;21703:9;21698:189;21722:16;:23;21718:1;:27;21698:189;;;21779:16;21796:1;21779:19;;;;;;;;:::i;:::-;;;;;;;:26;;;21766:7;21774:1;21766:10;;;;;;;;:::i;:::-;;;;;;:39;-1:-1:-1;;;;;21766:39:0;;;-1:-1:-1;;;;;21766:39:0;;;;;21841:16;21858:1;21841:19;;;;;;;;:::i;:::-;;;;;;;:35;;;21819:16;21836:1;21819:19;;;;;;;;:::i;:::-;;;;;;;;;;:57;21747:3;;;;:::i;:::-;;;;21698:189;;;;21457:436;21275:618;;;:::o;6116:803:9:-;6232:11;;;:23;-1:-1:-1;;;;;6232:23:9;:37;-1:-1:-1;6228:103:9;;;6292:28;;-1:-1:-1;;;6292:28:9;;;;;160:25:127;;;133:18;;6292:28:9;14:177:127;6228:103:9;6344:11;;;:35;-1:-1:-1;;;6344:35:9;;-1:-1:-1;;;;;6344:35:9;-1:-1:-1;;6340:145:9;;;6428:46;;-1:-1:-1;;;6428:46:9;;;;;160:25:127;;;133:18;;6428:46:9;14:177:127;6340:145:9;6499:11;;;:23;-1:-1:-1;;;;;6499:23:9;:38;;6495:167;;6579:23;:11;:21;:23::i;:::-;6553:11;;;:49;;-1:-1:-1;;;;;;6553:49:9;-1:-1:-1;;;;;6553:49:9;;;;;;;;;;6621:30;;160:25:127;;;6621:30:9;;148:2:127;133:18;6621:30:9;;;;;;;6495:167;6675:11;;;:35;-1:-1:-1;;;6675:35:9;;-1:-1:-1;;;;;6675:35:9;:62;;6671:242;;6791:35;:23;:33;:35::i;:::-;6753:11;;;:73;;-1:-1:-1;;;;;6753:73:9;;;;-1:-1:-1;;;6753:73:9;-1:-1:-1;;;;6753:73:9;;;;;;;;;6845:57;;160:25:127;;;6845:57:9;;148:2:127;133:18;6845:57:9;14:177:127;6671:242:9;6116:803;;;:::o;1086:155:8:-;1143:6;-1:-1:-1;;;;;1165:19:8;;1161:43;;;1193:11;;-1:-1:-1;;;1193:11:8;;;;;;;;;;;1161:43;-1:-1:-1;1228:5:8;1086:155::o;1767:106:44:-;1662:4;1685:7;-1:-1:-1;;;1685:7:44;;;;1836:9;1828:38;;;;-1:-1:-1;;;1828:38:44;;10730:2:127;1828:38:44;;;10712:21:127;10769:2;10749:18;;;10742:30;-1:-1:-1;;;10788:18:127;;;10781:46;10844:18;;1828:38:44;10528:340:127;27450:2943:0;-1:-1:-1;;;;;27604:21:0;;27531:7;27604:21;;;:5;:21;;;;;;;;27559:66;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27559:66:0;;;;;;;;;;;;;;;;;;;;;;;;27531:7;;;;27559:66;;;;;;;;27531:7;;27559:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27559:66:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27559:66:0;;;-1:-1:-1;27559:66:0;;;;;;-1:-1:-1;;;;;27559:66:0;;;;;;;-1:-1:-1;27559:66:0;27639:11;;;27635:93;;27673:44;;-1:-1:-1;;;27673:44:0;;-1:-1:-1;;;;;1369:55:127;;27673:44:0;;;1351:74:127;1324:18;;27673:44:0;1205:226:127;27635:93:0;27770:6;27741:13;:26;;;-1:-1:-1;;;;;27741:35:0;;27737:139;;;27838:26;;;;27799:66;;-1:-1:-1;;;27799:66:0;;-1:-1:-1;;;;;7629:39:127;;;27799:66:0;;;7611:58:127;7584:18;;27799:66:0;7466:209:127;27737:139:0;21030:11;:38;27886:63;;21030:38;;;-1:-1:-1;;;;;21030:38:0;27917:31;20923:152;27886:63;27959:96;27996:25;:23;:25::i;27959:96::-;28070:24;;28066:2321;;;28124:20;28114:6;:30;28110:131;;28171:55;;-1:-1:-1;;;28171:55:0;;-1:-1:-1;;;;;1369:55:127;;28171::0;;;1351:74:127;1324:18;;28171:55:0;1205:226:127;28110:131:0;28259:31;;;;-1:-1:-1;;;;;28259:35:0;;28255:128;;28321:47;;-1:-1:-1;;;28321:47:0;;-1:-1:-1;;;;;1369:55:127;;28321:47:0;;;1351:74:127;1324:18;;28321:47:0;1205:226:127;28255:128:0;28397:24;28424:140;28484:6;28492:25;:23;:25::i;28424:140::-;28397:167;;28620:18;:6;:16;:18::i;:::-;28579:11;:59;;:37;;:59;;;;-1:-1:-1;;;28579:59:0;;-1:-1:-1;;;;;28579:59:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;28579:59:0;;;;;-1:-1:-1;;;;;28579:59:0;;;;;;28690:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;28652:21:0;;:13;:21;;;:5;:21;;;;;;;;:56;;:21;;:5;:56;;;;;;;-1:-1:-1;;;;;28652:56:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;28652:56:0;;;;;-1:-1:-1;;;;;28652:56:0;;;;;;28728:9;28723:289;;28784:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;28757:45:0;:5;:23;;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;28820:21:0;;:13;:21;;;:5;:21;;;;;;;;;28885:94;;;;;;;;28820:38;;28885:94;28916:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;28885:94:0;;;;;28936:42;28954:24;28936:15;:42;:::i;:::-;28885:94;;28820:177;;;;;;;;-1:-1:-1;28820:177:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28820:177:0;-1:-1:-1;;;;;28820:177:0;;;;;;;;;;;;;;;;;28723:289;29025:17;:37;;29061:1;;29025:17;:32;;:37;;29061:1;;29025:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;29112:17;:39;-1:-1:-1;;;;;29077:22:0;;-1:-1:-1;29077:22:0;;;29112:7;29077:22;;;;;:74;;-1:-1:-1;;;;29077:74:0;29112:39;;;;-1:-1:-1;;;;;29112:39:0;-1:-1:-1;;;29077:74:0;;;;;;;-1:-1:-1;;29177:16:0;;-1:-1:-1;29166:28:0;;-1:-1:-1;;29166:28:0;28066:2321;-1:-1:-1;;;;;29462:22:0;;29225:18;29462:22;;;:7;:22;;;;;;;:27;29333:26;;;;-1:-1:-1;;;;;29462:27:0;;;;29246:205;;29300:88;;;29361:26;29300:32;:88::i;29246:205::-;:244;;;;:::i;:::-;29225:265;;29547:18;:6;:16;:18::i;:::-;29505:11;:60;;:11;;:60;;;;;;;-1:-1:-1;;;;;29505:60:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;29505:60:0;;;;;-1:-1:-1;;;;;29505:60:0;;;;;;29617:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;29579:21:0;;:13;:21;;;:5;:21;;;;;;;;:56;;:21;;:5;:56;;;;;;;-1:-1:-1;;;;;29579:56:0;;:::i;:::-;;;-1:-1:-1;;;;;29579:56:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29654:21:0;;-1:-1:-1;29654:21:0;;;-1:-1:-1;29654:21:0;;;;;:34;;;;;;;;:39;;;-1:-1:-1;29650:117:0;;29713:12;:39;;29751:1;;29713:12;:34;;:39;;29751:1;;29713:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29650:117;29786:9;29781:289;;29842:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;29815:45:0;:5;:23;;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;29878:21:0;;:13;:21;;;:5;:21;;;;;;;;;29943:94;;;;;;;;29878:38;;29943:94;29974:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;29943:94:0;;;;;29994:42;30012:24;29994:15;:42;:::i;:::-;29943:94;;29878:177;;;;;;;;-1:-1:-1;29878:177:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29878:177:0;-1:-1:-1;;;;;29878:177:0;;;;;;;;;;;;;;;;;29781:289;-1:-1:-1;;;;;30201:21:0;;:13;:21;;;:5;:21;;;;;:34;30114:225;;:213;;30168:96;;30201:34;;;-1:-1:-1;;;;;30201:34:0;30237:26;30168:32;:96::i;30114:213::-;:223;:225::i;:::-;-1:-1:-1;;;;;30084:22:0;;:14;:22;;;:7;:22;;;;;:255;;-1:-1:-1;;;;;;30084:255:0;-1:-1:-1;;;;;30084:255:0;;;;;;;;;;;30362:10;;-1:-1:-1;30084:14:0;-1:-1:-1;30354:22:0;;-1:-1:-1;30354:22:0;27450:2943;;;;;;;:::o;757:175:49:-;866:58;;-1:-1:-1;;;;;5638:55:127;;866:58:49;;;5620:74:127;5710:18;;;5703:34;;;839:86:49;;859:5;;-1:-1:-1;;;889:23:49;5593:18:127;;866:58:49;;;;-1:-1:-1;;866:58:49;;;;;;;;;;;;;;-1:-1:-1;;;;;866:58:49;-1:-1:-1;;;;;;866:58:49;;;;;;;;;;839:19;:86::i;7698:262:9:-;7790:54;;;;;;;;7834:10;;;7790:54;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7790:54:9;;;;;;;;;;;-1:-1:-1;;;7790:54:9;;;;;;;;;;7771:7;;7861:92;;7790:54;7861:92;:::i;1359:130:37:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:37;719:10:51;1422:23:37;1414:68;;;;-1:-1:-1;;;1414:68:37;;11411:2:127;1414:68:37;;;11393:21:127;;;11430:18;;;11423:30;11489:34;11469:18;;;11462:62;11541:18;;1414:68:37;11209:356:127;2433:117:44;1486:16;:14;:16::i;:::-;2501:5:::1;2491:15:::0;;-1:-1:-1;;;;2491:15:44::1;::::0;;2521:22:::1;719:10:51::0;2530:12:44::1;2521:22;::::0;-1:-1:-1;;;;;1369:55:127;;;1351:74;;1339:2;1324:18;2521:22:44::1;1205:226:127::0;30533:120:0;30582:10;:8;:10::i;:::-;30577:69;;30601:45;;-1:-1:-1;;;30601:45:0;;30634:5;30601:45;;;8038:41:127;30641:4:0;8095:18:127;;;8088:50;8011:18;;30601:45:0;7876:268:127;2186:115:44;1239:19;:17;:19::i;:::-;2245:7:::1;:14:::0;;-1:-1:-1;;;;2245:14:44::1;-1:-1:-1::0;;;2245:14:44::1;::::0;;2274:20:::1;2281:12;719:10:51::0;;640:96;2433:187:37;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:37;;;-1:-1:-1;;;;;;2541:17:37;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;4789:298:7:-;4923:70;:58;4955:6;4963:17;4923:31;:58::i;:70::-;4890:11;;;:103;;-1:-1:-1;;;;;4890:103:7;;;;;;-1:-1:-1;;4890:103:7;;;;;;;;;5041:39;:27;4890:6;5041:19;:27::i;:::-;:37;:39::i;:::-;5003:11;;;;:77;;;;;;;-1:-1:-1;;;5003:77:7;-1:-1:-1;;;;5003:77:7;;;;;;;;;;-1:-1:-1;4789:298:7:o;5299:416::-;5519:97;:85;5556:6;5564:20;5586:17;5519:36;:85::i;:97::-;5466:16;;;:150;;-1:-1:-1;;;;;5466:150:7;;;;;;-1:-1:-1;;;;;;5466:150:7;;;;;;;;;5669:39;:27;5466:6;5669:19;:27::i;:39::-;5626:16;;;;:82;;;;;;;-1:-1:-1;;;5626:82:7;-1:-1:-1;;;;5626:82:7;;;;;;;;;;-1:-1:-1;;5299:416:7:o;938:203:49:-;1065:68;;-1:-1:-1;;;;;11851:15:127;;;1065:68:49;;;11833:34:127;11903:15;;11883:18;;;11876:43;11935:18;;;11928:34;;;1038:96:49;;1058:5;;-1:-1:-1;;;1088:27:49;11745:18:127;;1065:68:49;11570:398:127;1038:96:49;938:203;;;;:::o;9526:716:7:-;4549:19;;;;9673:24;;9807:9;;4572:15;-1:-1:-1;;;4549:19:7;;;;;:38;;9713:90;;9763:19;;;;9755:46;;9786:15;;-1:-1:-1;;;9763:19:7;;;;9755:46;:::i;:::-;9740:11;;;;:62;;;:11;;:62;:::i;:::-;9713:90;;;9735:1;9713:90;9712:104;;;;:::i;:::-;9673:143;;10011:17;9994:14;:34;9990:96;;;10051:24;;-1:-1:-1;;;10051:24:7;;;;;;;;;;;9990:96;10118:46;10119:32;10137:14;10119:15;:32;:::i;10118:46::-;10096:19;;;:68;;;;;;;-1:-1:-1;;;10096:68:7;-1:-1:-1;;10096:68:7;;;;;;;;;10188:47;10189:33;10208:14;10189:16;:33;:::i;:::-;10188:45;:47::i;:::-;10174:11;;;;;:61;;-1:-1:-1;;10174:61:7;;;;;;;;;;;;-1:-1:-1;;;;9526:716:7:o;10328:375::-;-1:-1:-1;;;;;10662:23:7;;10531:7;10662:23;;;;;;;;;;:33;-1:-1:-1;;;10662:33:7;;-1:-1:-1;;;;;10662:33:7;10557:82;10662:23;10599:20;10621:17;10557:33;:82::i;:::-;:139;;;;:::i;:::-;10550:146;;10328:375;;;;;;;:::o;588:104:55:-;646:7;676:1;672;:5;:13;;684:1;672:13;;;-1:-1:-1;680:1:55;;665:20;-1:-1:-1;588:104:55:o;26761:583:0:-;-1:-1:-1;;;;;26892:21:0;;26810:7;26892:21;;;:5;:21;;;;;;;;26847:66;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26847:66:0;;;;;;;;;;;;;;;;;;;;;;;;26810:7;;;;;;26847:66;;26892:21;26847:66;;;;;26810:7;;26847:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26847:66:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26847:66:0;;;-1:-1:-1;26847:66:0;;;;;;-1:-1:-1;;;;;26847:66:0;;;;;;;;26927:26;;;;26847:66;;-1:-1:-1;26927:31:0;26847:66;26927:31;26923:105;;26981:36;;-1:-1:-1;;;26981:36:0;;-1:-1:-1;;;;;1369:55:127;;26981:36:0;;;1351:74:127;1324:18;;26981:36:0;1205:226:127;26923:105:0;27041:31;;;;-1:-1:-1;;;;;27041:35:0;;27037:120;;27099:47;;-1:-1:-1;;;27099:47:0;;-1:-1:-1;;;;;1369:55:127;;27099:47:0;;;1351:74:127;1324:18;;27099:47:0;1205:226:127;27037:120:0;27167:18;27187:24;27215:47;27221:6;27229:13;:26;;;-1:-1:-1;;;;;27215:47:0;27257:4;27215:5;:47::i;:::-;27280:26;;;;;-1:-1:-1;;;;;27272:65:0;;-1:-1:-1;27166:96:0;-1:-1:-1;27166:96:0;;-1:-1:-1;;;26761:583:0;;;;;:::o;6964:334:9:-;7062:10;;;:25;;;;;;-1:-1:-1;;7050:181:9;;;7169:10;;;:25;7137:83;;-1:-1:-1;;;7137:83:9;;7169:25;;;;;;7137:83;;;12443:36:127;12495:18;;;12488:34;;;12416:18;;7137:83:9;12271:257:127;7050:181:9;7260:4;7240:10;;;:24;;-1:-1:-1;;7240:24:9;;;;;;7279:12;;;;7240:17;;7279:12;6964:334;;:::o;3842:547:7:-;3987:21;4011:27;:15;:25;:27::i;:::-;4048:21;;;:38;;-1:-1:-1;;;;4048:38:7;-1:-1:-1;;;4048:38:7;;;;;;;;;;;;;-1:-1:-1;4097:16:7;;:57;;-1:-1:-1;;;;4097:57:7;-1:-1:-1;;;4097:57:7;;;;;-1:-1:-1;4164:11:7;;:52;;-1:-1:-1;;;;4164:52:7;-1:-1:-1;;;4164:52:7;;;;;;;;;4048:38;-1:-1:-1;4227:67:7;4048:21;4249:9;4260:14;4276:17;4227:13;:67::i;:::-;4339:21;;;;4310:72;;;12733:25:127;;;4339:21:7;-1:-1:-1;;;4339:21:7;;;;12818:2:127;12803:18;;12796:43;-1:-1:-1;;;4362:19:7;;;;;;12855:18:127;;;12848:43;4310:72:7;;12721:2:127;12706:18;4310:72:7;12533:364:127;9061:230:7;9191:7;9230:54;9250:6;9258:25;9230:19;:54::i;:::-;9221:63;;:6;:63;:::i;8053:274::-;8204:7;1775:4;8243:58;8275:6;8283:17;8243:31;:58::i;:::-;8234:67;;:6;:67;:::i;:::-;:86;;;;:::i;8677:700:9:-;8773:9;8768:423;8784:20;;;8768:423;;;8829:4;:12;8842:9;;8852:1;8842:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8829:26:9;;;;;;;;;;;;-1:-1:-1;8829:26:9;:37;;;8825:118;;;8915:9;;8925:1;8915:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8893:35;;-1:-1:-1;;;8893:35:9;;-1:-1:-1;;;;;1369:55:127;;;8893:35:9;;;1351:74:127;1324:18;;8893:35:9;1205:226:127;8825:118:9;9002:1;8960:4;9002:1;8973:9;;8983:1;8973:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8960:26:9;;;;;;;;;;;;-1:-1:-1;8960:26:9;:39;;;;-1:-1:-1;;;;;8960:39:9;:43;8956:121;;;9049:9;;9059:1;9049:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;9030:32;;-1:-1:-1;;;9030:32:9;;-1:-1:-1;;;;;1369:55:127;;;9030:32:9;;;1351:74:127;1324:18;;9030:32:9;1205:226:127;8956:121:9;9130:4;9090;:12;9103:9;;9113:1;9103:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9090:26:9;;;;;;;;;;;;-1:-1:-1;9090:26:9;:44;;-1:-1:-1;;9090:44:9;;;;;;;;;;9153:27;9167:9;;9177:1;9167:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;9153:27;;-1:-1:-1;;;;;1369:55:127;;;1351:74;;1339:2;1324:18;9153:27:9;;;;;;;8806:3;;;;:::i;:::-;;;;8768:423;;;-1:-1:-1;9343:27:9;:9;:25;:27::i;:::-;9315:10;;;:25;:55;;;:25;;;;;:55;:::i;:::-;9287:10;;;;:83;;;;;;;;;-1:-1:-1;;9287:83:9;;;;;;;;;;-1:-1:-1;;8677:700:9:o;25132:1523:0:-;-1:-1:-1;;;;;25250:21:0;;25209:38;25250:21;;;:5;:21;;;;;25311;;25250;;25311;;;;-1:-1:-1;;;;;25311:21:0;;25368:28;25390:6;25311:21;25368:28;:::i;:::-;25342:54;;25504:20;25486:15;:38;25482:136;;;25547:60;;-1:-1:-1;;;25547:60:0;;25586:20;25547:60;;;160:25:127;133:18;;25547:60:0;14:177:127;25482:136:0;25649:20;25631:15;:38;25627:151;;;25728:38;25746:20;25728:15;:38;:::i;:::-;25692:75;;-1:-1:-1;;;25692:75:0;;;;;;160:25:127;;148:2;133:18;;14:177;25627:151:0;25818:19;25841:1;25818:24;25814:637;;25858:96;25895:25;:23;:25::i;25858:96::-;25991:17;:32;;;25968:20;26184:19;;;26180:104;;26230:17;26223:46;;-1:-1:-1;;;;;;26223:46:0;;;26180:104;26333:18;:14;26350:1;26333:18;:::i;:::-;26298:17;:53;;-1:-1:-1;;26298:53:0;;;;;;;;;;;;;;-1:-1:-1;;;;;26366:22:0;;-1:-1:-1;26366:22:0;;;26298:7;26366:22;;;;;:74;;-1:-1:-1;;;;26366:74:0;26298:53;26401:39;;;-1:-1:-1;;;;;26401:39:0;-1:-1:-1;;;26366:74:0;;;;;;;-1:-1:-1;25814:637:0;26502:18;:6;:16;:18::i;:::-;26461:11;:59;;:37;;:59;;;;-1:-1:-1;;;26461:59:0;;-1:-1:-1;;;;;26461:59:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;26461:59:0;;;;;-1:-1:-1;;;;;26461:59:0;;;;;;26567:27;:15;:25;:27::i;:::-;-1:-1:-1;;;;;26530:21:0;;:13;:21;;;:5;:21;;;;;;;;;:64;;-1:-1:-1;;;;;26530:64:0;;;;;;-1:-1:-1;;;;;;26530:64:0;;;;;;;;;;26609:39;;13257:74:127;;;13347:18;;;13340:34;;;13390:18;;;13383:34;;;26609:39:0;;13245:2:127;13230:18;26609:39:0;13055:368:127;23068:1895:0;30786:11;:9;:11::i;:::-;-1:-1:-1;;;;;23193:21:0;::::1;23163:27;23193:21:::0;;;:5:::1;:21;::::0;;;;:34;::::1;::::0;::::1;-1:-1:-1::0;;;;;23193:34:0::1;::::0;23263:28:::1;23285:6:::0;23193:34;23263:28:::1;:::i;:::-;23237:54;;23405:24;23387:15;:42;23383:144;;;23452:64;::::0;-1:-1:-1;;;23452:64:0;;23491:24:::1;23452:64;::::0;::::1;160:25:127::0;133:18;;23452:64:0::1;14:177:127::0;23383:144:0::1;23657:12:::0;:36;-1:-1:-1;;;23657:36:0;::::1;-1:-1:-1::0;;;;;23657:36:0::1;23708:41:::0;;::::1;23704:161;;;23808:45;23834:19:::0;23808:23;:45:::1;:::i;23704:161::-;23988:26;24017:30;:5;:28;:30::i;:::-;23988:59;;24070:18;24061:6;:27;24057:120;;;24111:55;::::0;-1:-1:-1;;;24111:55:0;;::::1;::::0;::::1;160:25:127::0;;;133:18;;24111:55:0::1;14:177:127::0;24057:120:0::1;21030:11:::0;:38;24187:63:::1;::::0;21030:38;;;-1:-1:-1;;;;;21030:38:0;24218:31:::1;20923:152:::0;24187:63:::1;24260:96;24297:25;:23;:25::i;24260:96::-;24397:19;24420:1;24397:24:::0;24393:94:::1;;24437:12:::0;:39;;24475:1:::1;::::0;24437:12;:34:::1;::::0;:39:::1;::::0;24475:1;;24437:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24393:94;24497:31;24531:68;24564:6;24572:26;24531:32;:68::i;:::-;24497:102;;24652:106;:94;24689:23;24714:31;21030:11:::0;:38;-1:-1:-1;;;;;21030:38:0;;;;;;20923:152;24652:106:::1;-1:-1:-1::0;;;;;24609:22:0;::::1;:14;:22:::0;;;:7:::1;:22;::::0;;;;:149;;:22;;:14;:149:::1;::::0;;;-1:-1:-1;;;;;24609:149:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;24609:149:0::1;;;;;-1:-1:-1::0;;;;;24609:149:0::1;;;;;;24810:18;:6;:16;:18::i;:::-;24768:11:::0;:60;;:11;;:60:::1;::::0;;;;;::::1;-1:-1:-1::0;;;;;24768:60:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;24768:60:0::1;;;;;-1:-1:-1::0;;;;;24768:60:0::1;;;;;;24875:27;:15;:25;:27::i;:::-;-1:-1:-1::0;;;;;24838:21:0;::::1;:13;:21:::0;;;:5:::1;:21;::::0;;;;;;;;:64;;-1:-1:-1;;;;;24838:64:0;;;::::1;;;-1:-1:-1::0;;;;;;24838:64:0;;::::1;::::0;;;::::1;::::0;;;24917:39;;13257:74:127;;;13347:18;;;13340:34;;;13390:18;;;13383:34;;;24917:39:0::1;::::0;13245:2:127;13230:18;24917:39:0::1;;;;;;;23153:1810;;;;;23068:1895:::0;;:::o;8600:170:7:-;8703:7;8729:34;8738:25;8729:6;:34;:::i;3583:706:49:-;4002:23;4028:69;4056:4;4028:69;;;;;;;;;;;;;;;;;4036:5;-1:-1:-1;;;;;4028:27:49;;;:69;;;;;:::i;:::-;4111:17;;4002:95;;-1:-1:-1;4111:21:49;4107:176;;4206:10;4195:30;;;;;;;;;;;;:::i;:::-;4187:85;;;;-1:-1:-1;;;4187:85:49;;13807:2:127;4187:85:49;;;13789:21:127;13846:2;13826:18;;;13819:30;13885:34;13865:18;;;13858:62;-1:-1:-1;;;13936:18:127;;;13929:40;13986:19;;4187:85:49;13605:406:127;1945:106:44;1662:4;1685:7;-1:-1:-1;;;1685:7:44;;;;2003:41;;;;-1:-1:-1;;;2003:41:44;;14218:2:127;2003:41:44;;;14200:21:127;14257:2;14237:18;;;14230:30;14296:22;14276:18;;;14269:50;14336:18;;2003:41:44;14016:344:127;5721:649:7;5859:7;5886:17;5907:1;5886:22;5882:65;;-1:-1:-1;5917:11:7;;;:30;;;;-1:-1:-1;;;;;5917:30:7;5910:37;;5882:65;4549:19;;;;5957:42;;4572:15;-1:-1:-1;;;4549:19:7;;;;;:38;;6002:188;;6154:11;;;:35;6128:62;;-1:-1:-1;;;6154:35:7;;;;6128:15;:62;:::i;:::-;6002:188;;;6076:11;;;:35;6045:19;;;;6037:75;;6076:35;-1:-1:-1;;;6076:35:7;;;;;;-1:-1:-1;;;6045:19:7;;;6037:75;:::i;:::-;6262:11;;;;5957:233;;-1:-1:-1;6253:110:7;;6333:17;;1775:4;;6254:57;;5957:233;;6262:11;;6254:57;:::i;:::-;:76;;;;:::i;:::-;:96;;;;:::i;6253:110::-;6208:11;;;:30;:155;;;:30;;;-1:-1:-1;;;;;6208:30:7;:155;:::i;:::-;-1:-1:-1;;;;;6201:162:7;;5721:649;-1:-1:-1;;;;5721:649:7:o;10956:163::-;11074:19;;;;11031:7;;11057:55;;-1:-1:-1;;;11074:19:7;;;;11096:15;11057:8;:55::i;764:155:8:-;821:6;332:16;843:19;;839:43;;;871:11;;-1:-1:-1;;;871:11:8;;;;;;;;;;;6376:820:7;6555:7;6578:17;6599:1;6578:22;6574:73;;-1:-1:-1;6609:16:7;;;:38;;;;-1:-1:-1;;;;;6609:38:7;6602:45;;6574:73;4549:19;;;;6657:42;;4572:15;-1:-1:-1;;;4549:19:7;;;;;:38;;6702:196;;6857:16;;;:40;6831:67;;-1:-1:-1;;;6857:40:7;;;;6831:15;:67;:::i;:::-;6702:196;;;6775:16;;;:40;6744:19;;;;6736:80;;6775:40;-1:-1:-1;;;6775:40:7;;;;;;-1:-1:-1;;;6744:19:7;;;6736:80;:::i;:::-;7127:16;;;;:31;6657:241;;-1:-1:-1;6969:220:7;;7110:53;;7127:31;;;;;7110:8;:53::i;:::-;6995:11;;;;7070:17;;7047:20;;6987:57;;7010:34;;6995:11;;6987:57;:::i;:::-;:80;;;;:::i;:::-;:100;;;;:::i;6969:220::-;6916:16;;;:38;:273;;;:38;;;-1:-1:-1;;;;;6916:38:7;:273;:::i;:::-;-1:-1:-1;;;;;6909:280:7;;6376:820;-1:-1:-1;;;;;6376:820:7:o;925:155:8:-;982:6;458:16;1004:19;;1000:43;;;1032:11;;-1:-1:-1;;;1032:11:8;;;;;;;;;;;7462:294:7;7638:7;7664:85;7701:6;7709:20;7731:17;7664:36;:85::i;607:151:8:-;663:5;207:15;684:18;;680:42;;;711:11;;-1:-1:-1;;;711:11:8;;;;;;;;;;;8216:251:9;8309:54;;;;;;;;8353:10;;;8309:54;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8309:54:9;;;;;;;;;;;-1:-1:-1;;;8309:54:9;;;;;;;;;;8388:11;;:23;8290:7;;8380:80;;8309:54;;8388:23;8380:80;:::i;4109:223:50:-;4242:12;4273:52;4295:6;4303:4;4309:1;4312:12;4273:21;:52::i;413:104:55:-;471:7;501:1;497;:5;:13;;509:1;497:13;;5166:446:50;5331:12;5388:5;5363:21;:30;;5355:81;;;;-1:-1:-1;;;5355:81:50;;14567:2:127;5355:81:50;;;14549:21:127;14606:2;14586:18;;;14579:30;14645:34;14625:18;;;14618:62;-1:-1:-1;;;14696:18:127;;;14689:36;14742:19;;5355:81:50;14365:402:127;5355:81:50;5447:12;5461:23;5488:6;-1:-1:-1;;;;;5488:11:50;5507:5;5514:4;5488:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5446:73;;;;5536:69;5563:6;5571:7;5580:10;5592:12;5536:26;:69::i;:::-;5529:76;5166:446;-1:-1:-1;;;;;;;5166:446:50:o;7672:628::-;7852:12;7880:7;7876:418;;;7907:10;:17;7928:1;7907:22;7903:286;;-1:-1:-1;;;;;1702:19:50;;;8114:60;;;;-1:-1:-1;;;8114:60:50;;15266:2:127;8114:60:50;;;15248:21:127;15305:2;15285:18;;;15278:30;15344:31;15324:18;;;15317:59;15393:18;;8114:60:50;15064:353:127;8114:60:50;-1:-1:-1;8209:10:50;8202:17;;7876:418;8250:33;8258:10;8270:12;8981:17;;:21;8977:379;;9209:10;9203:17;9265:15;9252:10;9248:2;9244:19;9237:44;8977:379;9332:12;9325:20;;-1:-1:-1;;;9325:20:50;;;;;;;;:::i;449:250:127:-;534:1;544:113;558:6;555:1;552:13;544:113;;;634:11;;;628:18;615:11;;;608:39;580:2;573:10;544:113;;;-1:-1:-1;;691:1:127;673:16;;666:27;449:250::o;704:271::-;746:3;784:5;778:12;811:6;806:3;799:19;827:76;896:6;889:4;884:3;880:14;873:4;866:5;862:16;827:76;:::i;:::-;957:2;936:15;-1:-1:-1;;932:29:127;923:39;;;;964:4;919:50;;704:271;-1:-1:-1;;704:271:127:o;980:220::-;1129:2;1118:9;1111:21;1092:4;1149:45;1190:2;1179:9;1175:18;1167:6;1149:45;:::i;1628:196::-;1696:20;;-1:-1:-1;;;;;1745:54:127;;1735:65;;1725:93;;1814:1;1811;1804:12;1725:93;1628:196;;;:::o;1829:254::-;1897:6;1905;1958:2;1946:9;1937:7;1933:23;1929:32;1926:52;;;1974:1;1971;1964:12;1926:52;1997:29;2016:9;1997:29;:::i;:::-;1987:39;2073:2;2058:18;;;;2045:32;;-1:-1:-1;;;1829:254:127:o;2088:180::-;2147:6;2200:2;2188:9;2179:7;2175:23;2171:32;2168:52;;;2216:1;2213;2206:12;2168:52;-1:-1:-1;2239:23:127;;2088:180;-1:-1:-1;2088:180:127:o;2273:186::-;2332:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:52;;;2401:1;2398;2391:12;2353:52;2424:29;2443:9;2424:29;:::i;2464:248::-;2532:6;2540;2593:2;2581:9;2572:7;2568:23;2564:32;2561:52;;;2609:1;2606;2599:12;2561:52;-1:-1:-1;;2632:23:127;;;2702:2;2687:18;;;2674:32;;-1:-1:-1;2464:248:127:o;2717:591::-;2787:6;2795;2848:2;2836:9;2827:7;2823:23;2819:32;2816:52;;;2864:1;2861;2854:12;2816:52;2904:9;2891:23;2933:18;2974:2;2966:6;2963:14;2960:34;;;2990:1;2987;2980:12;2960:34;3028:6;3017:9;3013:22;3003:32;;3073:7;3066:4;3062:2;3058:13;3054:27;3044:55;;3095:1;3092;3085:12;3044:55;3135:2;3122:16;3161:2;3153:6;3150:14;3147:34;;;3177:1;3174;3167:12;3147:34;3222:7;3217:2;3208:6;3204:2;3200:15;3196:24;3193:37;3190:57;;;3243:1;3240;3233:12;3190:57;3274:2;3266:11;;;;;3296:6;;-1:-1:-1;2717:591:127;;-1:-1:-1;;;;2717:591:127:o;3313:615::-;3399:6;3407;3460:2;3448:9;3439:7;3435:23;3431:32;3428:52;;;3476:1;3473;3466:12;3428:52;3516:9;3503:23;3545:18;3586:2;3578:6;3575:14;3572:34;;;3602:1;3599;3592:12;3572:34;3640:6;3629:9;3625:22;3615:32;;3685:7;3678:4;3674:2;3670:13;3666:27;3656:55;;3707:1;3704;3697:12;3656:55;3747:2;3734:16;3773:2;3765:6;3762:14;3759:34;;;3789:1;3786;3779:12;3759:34;3842:7;3837:2;3827:6;3824:1;3820:14;3816:2;3812:23;3808:32;3805:45;3802:65;;;3863:1;3860;3853:12;3933:1183;4199:2;4211:21;;;4281:13;;4184:18;;;4303:22;;;4151:4;;4378;;4356:2;4341:18;;;4405:15;;;4151:4;4448:202;4462:6;4459:1;4456:13;4448:202;;;4527:13;;-1:-1:-1;;;;;4523:46:127;4511:59;;4590:12;;;;4625:15;;;;4484:1;4477:9;4448:202;;;-1:-1:-1;;;4686:19:127;;;4666:18;;;4659:47;4756:13;;4778:21;;;4854:15;;;;4817:12;;;4889:1;4899:189;4915:8;4910:3;4907:17;4899:189;;;4984:15;;4970:30;;5061:17;;;;5022:14;;;;4943:1;4934:11;4899:189;;;-1:-1:-1;5105:5:127;;3933:1183;-1:-1:-1;;;;;;;3933:1183:127:o;5121:127::-;5182:10;5177:3;5173:20;5170:1;5163:31;5213:4;5210:1;5203:15;5237:4;5234:1;5227:15;5253:188;-1:-1:-1;;;;;5366:10:127;;;5378;;;5362:27;;5401:11;;;5398:37;;;5415:18;;:::i;:::-;5398:37;5253:188;;;;:::o;5748:127::-;5809:10;5804:3;5800:20;5797:1;5790:31;5840:4;5837:1;5830:15;5864:4;5861:1;5854:15;5880:112;5912:1;5938;5928:35;;5943:18;;:::i;:::-;-1:-1:-1;5977:9:127;;5880:112::o;5997:128::-;6064:9;;;6085:11;;;6082:37;;;6099:18;;:::i;6130:125::-;6195:9;;;6216:10;;;6213:36;;;6229:18;;:::i;6705:127::-;6766:10;6761:3;6757:20;6754:1;6747:31;6797:4;6794:1;6787:15;6821:4;6818:1;6811:15;6837:135;6876:3;6897:17;;;6894:43;;6917:18;;:::i;:::-;-1:-1:-1;6964:1:127;6953:13;;6837:135::o;7184:277::-;7251:6;7304:2;7292:9;7283:7;7279:23;7275:32;7272:52;;;7320:1;7317;7310:12;7272:52;7352:9;7346:16;7405:5;7398:13;7391:21;7384:5;7381:32;7371:60;;7427:1;7424;7417:12;7680:191;-1:-1:-1;;;;;7807:10:127;;;7795;;;7791:27;;7830:12;;;7827:38;;;7845:18;;:::i;8149:266::-;8237:6;8232:3;8225:19;8289:6;8282:5;8275:4;8270:3;8266:14;8253:43;-1:-1:-1;8341:1:127;8316:16;;;8334:4;8312:27;;;8305:38;;;;8397:2;8376:15;;;-1:-1:-1;;8372:29:127;8363:39;;;8359:50;;8149:266::o;8420:364::-;-1:-1:-1;;;;;8609:6:127;8605:55;8594:9;8587:74;8697:2;8692;8681:9;8677:18;8670:30;8568:4;8717:61;8774:2;8763:9;8759:18;8751:6;8743;8717:61;:::i;8789:289::-;8964:6;8953:9;8946:25;9007:2;9002;8991:9;8987:18;8980:30;8927:4;9027:45;9068:2;9057:9;9053:18;9045:6;9027:45;:::i;9083:580::-;-1:-1:-1;;;;;9356:6:127;9352:55;9341:9;9334:74;9444:6;9439:2;9428:9;9424:18;9417:34;9487:6;9482:2;9471:9;9467:18;9460:34;9530:6;9525:2;9514:9;9510:18;9503:34;9574:3;9568;9557:9;9553:19;9546:32;9315:4;9595:62;9652:3;9641:9;9637:19;9629:6;9621;9595:62;:::i;:::-;9587:70;9083:580;-1:-1:-1;;;;;;;;9083:580:127:o;9668:184::-;9738:6;9791:2;9779:9;9770:7;9766:23;9762:32;9759:52;;;9807:1;9804;9797:12;9759:52;-1:-1:-1;9830:16:127;;9668:184;-1:-1:-1;9668:184:127:o;9857:127::-;9918:10;9913:3;9909:20;9906:1;9899:31;9949:4;9946:1;9939:15;9973:4;9970:1;9963:15;10396:127;10457:10;10452:3;10448:20;10445:1;10438:31;10488:4;10485:1;10478:15;10512:4;10509:1;10502:15;10873:151;10963:4;10956:12;;;10942;;;10938:31;;10981:14;;10978:40;;;10998:18;;:::i;11029:175::-;11097:10;11140;;;11128;;;11124:27;;11163:12;;;11160:38;;;11178:18;;:::i;11973:168::-;12046:9;;;12077;;12094:15;;;12088:22;;12074:37;12064:71;;12115:18;;:::i;12146:120::-;12186:1;12212;12202:35;;12217:18;;:::i;:::-;-1:-1:-1;12251:9:127;;12146:120::o;12902:148::-;12990:4;12969:12;;;12983;;;12965:31;;13008:13;;13005:39;;;13024:18;;:::i;13428:172::-;13495:10;13525;;;13537;;;13521:27;;13560:11;;;13557:37;;;13574:18;;:::i;14772:287::-;14901:3;14939:6;14933:13;14955:66;15014:6;15009:3;15002:4;14994:6;14990:17;14955:66;:::i;:::-;15037:16;;;;;14772:287;-1:-1:-1;;14772:287:127:o", "linkReferences": {}, "immutableReferences": { "111": [ { "start": 1045, "length": 32 }, { "start": 8803, "length": 32 }, { "start": 12876, "length": 32 }, { "start": 12929, "length": 32 }, { "start": 12975, "length": 32 }, { "start": 13018, "length": 32 } ], "114": [ { "start": 848, "length": 32 }, { "start": 13516, "length": 32 }, { "start": 13569, "length": 32 } ], "117": [ { "start": 4974, "length": 32 } ], "120": [ { "start": 3278, "length": 32 }, { "start": 5070, "length": 32 } ], "123": [ { "start": 1270, "length": 32 }, { "start": 5373, "length": 32 }, { "start": 5762, "length": 32 }, { "start": 6050, "length": 32 }, { "start": 9538, "length": 32 }, { "start": 10134, "length": 32 }, { "start": 13813, "length": 32 } ], "126": [ { "start": 9243, "length": 32 }, { "start": 9976, "length": 32 } ], "90": [ { "start": 1724, "length": 32 }, { "start": 2315, "length": 32 }, { "start": 3229, "length": 32 }, { "start": 4443, "length": 32 }, { "start": 5023, "length": 32 }, { "start": 5695, "length": 32 }, { "start": 6196, "length": 32 }, { "start": 6418, "length": 32 }, { "start": 7084, "length": 32 } ] } }, "methodIdentifiers": { "acceptMigrationTarget()": "e937fdaa", "addOperators(address[])": "a07aea1c", "addReward(uint256,uint256)": "75c93bb9", "claim()": "4e71d92d", "claimFrozenPrincipal()": "e8376b8a", "claimReward()": "b88a802f", "emergencyPause()": "51858e27", "emergencyUnpause()": "4a4e3bd5", "getArpaToken()": "d174e658", "getAvailableReward()": "e0974ea5", "getBaseReward(address)": "9a109bc2", "getClaimablePrincipalAmount(address)": "3ff08985", "getCommunityStakerLimits()": "0641bdd8", "getCommunityStakersCount()": "ed63e807", "getController()": "3018205f", "getDelegatesCount()": "32e28850", "getDelegationRateDenominator()": "5e8b40d7", "getDelegationReward(address)": "87e900b1", "getFrozenPrincipal(address)": "fa4934e7", "getLockedAmount(address)": "929ec537", "getMaxPoolSize()": "0fbc8f5b", "getMigrationTarget()": "1ddb5552", "getOperatorLimit()": "2624c83c", "getRewardRate()": "7e1a3786", "getRewardTimestamps()": "59f01879", "getStake(address)": "7a766460", "getTotalCommunityStakedAmount()": "049b2ca0", "getTotalDelegatedAmount()": "a7a2f5aa", "getTotalFrozenAmount()": "e9f37cdf", "getTotalStakedAmount()": "38adb6f0", "isActive()": "22f3e2d4", "isOperator(address)": "6d70f7ae", "lock(address,uint256)": "282d3fdf", "migrate(bytes)": "8932a90d", "newReward(uint256,uint256)": "cfcd8fd8", "owner()": "8da5cb5b", "paused()": "5c975abb", "proposeMigrationTarget(address)": "63b2c85a", "renounceOwnership()": "715018a6", "setController(address)": "92eefe9b", "setPoolConfig(uint256,uint256)": "4aba2ca9", "slashDelegationReward(address,uint256)": "8899fdeb", "stake(uint256)": "a694fc3a", "start(uint256,uint256)": "8fb4b573", "transferOwnership(address)": "f2fde38b", "typeAndVersion()": "181f5a77", "unlock(address,uint256)": "7eee288d", "unstake(uint256)": "2e17de78" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"arpa\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialMaxPoolSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialMaxCommunityStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minCommunityStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"operatorStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minInitialOperatorCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minRewardDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delegationRateDenominator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeFreezingDuration\",\"type\":\"uint256\"}],\"internalType\":\"struct Staking.PoolConstructorParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessForbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CastError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"remainingAmount\",\"type\":\"uint256\"}],\"name\":\"ExcessiveStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ExistingLockedStakeFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"ExistingStakeFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"FrozenPrincipalDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"currentOperatorsCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minInitialOperatorsCount\",\"type\":\"uint256\"}],\"name\":\"InadequateInitialOperatorsCount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"currentLockedStakingAmount\",\"type\":\"uint256\"}],\"name\":\"InadequateOperatorLockedStakingAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"currentStakingAmount\",\"type\":\"uint256\"}],\"name\":\"InadequateStakingAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientStakeAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegationRate\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxStakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidMaxStakeAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMigrationTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMinCommunityStakeAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxPoolSize\",\"type\":\"uint256\"}],\"name\":\"InvalidPoolSize\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"currentStatus\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"requiredStatus\",\"type\":\"bool\"}],\"name\":\"InvalidPoolStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseRewardForOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardDurationTooShort\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotController\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"StakeNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"UnstakeOperatorWithPartialAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"UnstakeWithZeroAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"ControllerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegationRewardSlashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"principal\",\"type\":\"uint256\"}],\"name\":\"FrozenPrincipalClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newLock\",\"type\":\"uint256\"}],\"name\":\"Locked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"principal\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegationReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Migrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"migrationTarget\",\"type\":\"address\"}],\"name\":\"MigrationTargetAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"migrationTarget\",\"type\":\"address\"}],\"name\":\"MigrationTargetProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseReward\",\"type\":\"uint256\"}],\"name\":\"RewardClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalStake\",\"type\":\"uint256\"}],\"name\":\"Staked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"arpaAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialMaxPoolSize\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialMaxCommunityStakeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minCommunityStakeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorStakeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minInitialOperatorCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minRewardDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegationRateDenominator\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstakeFreezingDuration\",\"type\":\"uint256\"}],\"name\":\"StakingConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newUnlock\",\"type\":\"uint256\"}],\"name\":\"Unlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"principal\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegationReward\",\"type\":\"uint256\"}],\"name\":\"Unstaked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptMigrationTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"addOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDuration\",\"type\":\"uint256\"}],\"name\":\"addReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimFrozenPrincipal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emergencyPause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emergencyUnpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getArpaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAvailableReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getBaseReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getClaimablePrincipalAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"claimingPrincipal\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCommunityStakerLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCommunityStakersCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDelegatesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDelegationRateDenominator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getDelegationReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getFrozenPrincipal\",\"outputs\":[{\"internalType\":\"uint96[]\",\"name\":\"amounts\",\"type\":\"uint96[]\"},{\"internalType\":\"uint256[]\",\"name\":\"unlockTimestamps\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getLockedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxPoolSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMigrationTarget\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOperatorLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRewardRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRewardTimestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalCommunityStakedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalDelegatedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalFrozenAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalStakedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDuration\",\"type\":\"uint256\"}],\"name\":\"newReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"migrationTarget\",\"type\":\"address\"}],\"name\":\"proposeMigrationTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"setController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxPoolSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCommunityStakeAmount\",\"type\":\"uint256\"}],\"name\":\"setPoolConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"slashDelegationReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDuration\",\"type\":\"uint256\"}],\"name\":\"start\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ExcessiveStakeAmount(uint256)\":[{\"params\":{\"remainingAmount\":\"maximum remaining amount that can be staked. This is the difference between the existing staked amount and the individual and global limits.\"}}],\"ExistingStakeFound(address)\":[{\"params\":{\"staker\":\"address of the staker who is being added as an operator\"}}],\"InadequateInitialOperatorsCount(uint256,uint256)\":[{\"params\":{\"currentOperatorsCount\":\"The current number of operators in the staking pool\",\"minInitialOperatorsCount\":\"The minimum required number of operators in the staking pool before opening\"}}],\"InadequateOperatorLockedStakingAmount(uint256)\":[{\"params\":{\"currentLockedStakingAmount\":\"Current locked staking amount\"}}],\"InsufficientStakeAmount(uint256)\":[{\"params\":{\"requiredAmount\":\"minimum required stake amount\"}}],\"InvalidMaxStakeAmount(uint256)\":[{\"params\":{\"maxStakeAmount\":\"the current maximum stake amount\"}}],\"InvalidPoolSize(uint256)\":[{\"params\":{\"maxPoolSize\":\"the current maximum pool size\"}}],\"InvalidPoolStatus(bool,bool)\":[{\"params\":{\"currentStatus\":\"current status of the pool\",\"requiredStatus\":\"required status of the pool to proceed\"}}],\"OperatorAlreadyExists(address)\":[{\"params\":{\"operator\":\"address of the operator\"}}],\"OperatorDoesNotExist(address)\":[{\"params\":{\"operator\":\"address of the operator\"}}],\"StakeNotFound(address)\":[{\"params\":{\"staker\":\"address of the staker who attempted to withdraw funds\"}}]},\"events\":{\"ControllerSet(address)\":{\"params\":{\"controller\":\"Controller address\"}},\"DelegationRewardSlashed(address,uint256)\":{\"params\":{\"amount\":\"Amount slashed\",\"staker\":\"Staker address\"}},\"FrozenPrincipalClaimed(address,uint256)\":{\"params\":{\"principal\":\"Principal amount claimed\",\"staker\":\"Staker address\"}},\"Locked(address,uint256)\":{\"params\":{\"newLock\":\"New principal amount locked\",\"staker\":\"Staker address\"}},\"Migrated(address,uint256,uint256,uint256,bytes)\":{\"params\":{\"baseReward\":\"Amount of base rewards withdrawn\",\"data\":\"Migration payload\",\"delegationReward\":\"Amount of delegation rewards withdrawn (if applicable)\",\"principal\":\"Principal amount deposited\",\"staker\":\"Staker address\"}},\"MigrationTargetAccepted(address)\":{\"params\":{\"migrationTarget\":\"Contract address to migrate stakes to.\"}},\"MigrationTargetProposed(address)\":{\"params\":{\"migrationTarget\":\"Contract address to migrate stakes to.\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RewardClaimed(address,uint256)\":{\"params\":{\"baseReward\":\"Base reward amount claimed\",\"staker\":\"Staker address\"}},\"Staked(address,uint256,uint256)\":{\"params\":{\"newStake\":\"New principal amount staked\",\"staker\":\"Staker address\",\"totalStake\":\"Total principal amount staked\"}},\"Unlocked(address,uint256)\":{\"params\":{\"newUnlock\":\"New principal amount unlocked\",\"staker\":\"Staker address\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Unstaked(address,uint256,uint256,uint256)\":{\"params\":{\"baseReward\":\"base reward earned\",\"delegationReward\":\"delegation reward earned, if any\",\"principal\":\"Principal amount frozen after unstaking\",\"staker\":\"Staker address\"}}},\"kind\":\"dev\",\"methods\":{\"addOperators(address[])\":{\"details\":\"Required conditions for adding operators: - Operators can only be added to the pool if they have no prior stake. - Operators cannot be added to the pool after staking ends.\",\"params\":{\"operators\":\"A list of operator addresses to add\"}},\"addReward(uint256,uint256)\":{\"details\":\"Should only be callable by the owner\",\"params\":{\"amount\":\"The amount of rewards to add to the pool\",\"rewardDuration\":\"The duration of the reward\"}},\"emergencyPause()\":{\"details\":\"Sets the pause flag to true\"},\"emergencyUnpause()\":{\"details\":\"Sets the pause flag to false\"},\"getArpaToken()\":{\"returns\":{\"_0\":\"address ARPA token contract's address that is used by the pool\"}},\"getAvailableReward()\":{\"details\":\"This reflects how many rewards were made available over the lifetime of the staking pool.\",\"returns\":{\"_0\":\"uint256 total amount of ARPA tokens made available for rewards in ARPA wei\"}},\"getBaseReward(address)\":{\"returns\":{\"_0\":\"uint256 amount of base rewards earned by a staker in ARPA wei\"}},\"getClaimablePrincipalAmount(address)\":{\"returns\":{\"claimingPrincipal\":\"uint256 amount of ARPA wei that can be claimed as frozen principal by a staker\"}},\"getCommunityStakerLimits()\":{\"returns\":{\"_0\":\"uint256 minimum amount that can be staked by a community staker\",\"_1\":\"uint256 maximum amount that can be staked by a community staker\"}},\"getCommunityStakersCount()\":{\"returns\":{\"_0\":\"uint256 number of staking community stakers that are eligible for base rewards\"}},\"getController()\":{\"returns\":{\"_0\":\"address controller contract's address that is used by the pool\"}},\"getDelegatesCount()\":{\"returns\":{\"_0\":\"uint256 number of staking operators that are eligible for delegation rewards\"}},\"getDelegationRateDenominator()\":{\"returns\":{\"_0\":\"uint256 current delegation rate\"}},\"getDelegationReward(address)\":{\"returns\":{\"_0\":\"uint256 amount of delegation rewards earned by an operator in ARPA wei\"}},\"getFrozenPrincipal(address)\":{\"returns\":{\"amounts\":\"total amounts of ARPA wei that is currently frozen by the staker\",\"unlockTimestamps\":\"timestamps when the frozen principal can be withdrawn\"}},\"getLockedAmount(address)\":{\"params\":{\"staker\":\"Node address\"}},\"getMaxPoolSize()\":{\"returns\":{\"_0\":\"uint256 current maximum staking pool size\"}},\"getOperatorLimit()\":{\"returns\":{\"_0\":\"uint256 amount that should be staked by an operator\"}},\"getRewardRate()\":{\"returns\":{\"_0\":\"uint256 current reward rate, expressed in arpa weis per second\"}},\"getRewardTimestamps()\":{\"returns\":{\"_0\":\"uint256 reward initialization timestamp\",\"_1\":\"uint256 reward expiry timestamp\"}},\"getStake(address)\":{\"params\":{\"staker\":\"address\"},\"returns\":{\"_0\":\"uint256 staker's staked principal amount\"}},\"getTotalCommunityStakedAmount()\":{\"returns\":{\"_0\":\"uint256 total amount staked by community stakers in ARPA wei\"}},\"getTotalDelegatedAmount()\":{\"returns\":{\"_0\":\"uint256 staked amount that is used when calculating delegation rewards in ARPA wei\"}},\"getTotalFrozenAmount()\":{\"details\":\"Used to make sure that contract's balance is correct. total staked amount + total frozen amount + available rewards = current balance\",\"returns\":{\"_0\":\"uint256 the sum of frozen operator principals that have not been withdrawn from the staking pool in ARPA wei.\"}},\"getTotalStakedAmount()\":{\"returns\":{\"_0\":\"uint256 total amount staked by community stakers and operators in ARPA wei\"}},\"isActive()\":{\"returns\":{\"_0\":\"bool pool status\"}},\"lock(address,uint256)\":{\"params\":{\"amount\":\"Amount to lock\",\"staker\":\"Node address\"}},\"migrate(bytes)\":{\"params\":{\"data\":\"Migration path details\"}},\"newReward(uint256,uint256)\":{\"details\":\"Should only callable by the Owner\",\"params\":{\"amount\":\"The amount of rewards to add to the pool\",\"rewardDuration\":\"The duration of the reward\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proposeMigrationTarget(address)\":{\"params\":{\"migrationTarget\":\"Contract address to migrate stakes to.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setController(address)\":{\"details\":\"Should only be callable by the owner\",\"params\":{\"controller\":\"The address of the controller contract\"}},\"setPoolConfig(uint256,uint256)\":{\"params\":{\"maxCommunityStakeAmount\":\"The max amount of ARPA a community staker can stake\",\"maxPoolSize\":\"The max amount of staked ARPA by community stakers allowed in the pool\"}},\"slashDelegationReward(address,uint256)\":{\"params\":{\"amount\":\"Amount to slash\",\"staker\":\"Node address\"}},\"start(uint256,uint256)\":{\"details\":\"Uses ERC20 approve + transferFrom flow\",\"params\":{\"amount\":\"rewards amount in ARPA\",\"rewardDuration\":\"rewards duration in seconds\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unlock(address,uint256)\":{\"params\":{\"amount\":\"Amount to unlock\",\"staker\":\"Node address\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AccessForbidden()\":[{\"notice\":\"This error is thrown whenever an address does not have access to successfully execute a transaction\"}],\"AlreadyInitialized()\":[{\"notice\":\"This error is thrown when the reward is already initialized\"}],\"ExcessiveStakeAmount(uint256)\":[{\"notice\":\"This error is raised when stakers attempt to stake past pool limits.\"}],\"ExistingLockedStakeFound(address)\":[{\"notice\":\"This error is raised when attempting to unstake with existing locked staking amount.\"}],\"ExistingStakeFound(address)\":[{\"notice\":\"This error is raised when addresses with existing stake is added as an operator.\"}],\"FrozenPrincipalDoesNotExist(address)\":[{\"notice\":\"This error is raised when attempting to claim frozen principal that does not exist.\"}],\"InadequateInitialOperatorsCount(uint256,uint256)\":[{\"notice\":\"This error is raised when attempting to start staking with less than the minimum required node operators\"}],\"InadequateOperatorLockedStakingAmount(uint256)\":[{\"notice\":\"This error is raised when attempting to unlock with more than the current locked staking amount\"}],\"InadequateStakingAmount(uint256)\":[{\"notice\":\"This error is raised when attempting to unstake with more than the current staking amount.\"}],\"InvalidDelegationRate()\":[{\"notice\":\"This error is thrown when an zero delegation rate is supplied\"}],\"InvalidMaxStakeAmount(uint256)\":[{\"notice\":\"This error is raised when attempting to decrease maximum stake amount for community stakers or node operators\"}],\"InvalidMigrationTarget()\":[{\"notice\":\"This error is raised when the contract owner supplies a non-contract migration target.\"}],\"InvalidMinCommunityStakeAmount()\":[{\"notice\":\"This error is thrown when an invalid min community stake amount is supplied\"}],\"InvalidOperatorStakeAmount()\":[{\"notice\":\"This error is thrown when an invalid operator stake amount is supplied\"}],\"InvalidPoolSize(uint256)\":[{\"notice\":\"This error is raised when attempting to decrease maximum pool size.\"}],\"InvalidPoolStatus(bool,bool)\":[{\"notice\":\"Surfaces the required pool status to perform an operation (true if open / false if closed)\"}],\"InvalidZeroAddress()\":[{\"notice\":\"This error is thrown whenever a zero-address is supplied when a non-zero address is required\"}],\"NoBaseRewardForOperator()\":[{\"notice\":\"This error is raised when attempting to claim rewards by an operator.\"}],\"OperatorAlreadyExists(address)\":[{\"notice\":\"This error is raised when an address is duplicated in the supplied list of operators. This can happen in addOperators and setFeedOperators functions.\"}],\"OperatorDoesNotExist(address)\":[{\"notice\":\"This error is raised when lock/unlock/slash is called on an operator that does not exist.\"}],\"RewardDurationTooShort()\":[{\"notice\":\"This error is thrown when the updated reward duration is too short\"}],\"SenderNotController()\":[{\"notice\":\"This error is thrown whenever the sender is not controller contract\"}],\"StakeNotFound(address)\":[{\"notice\":\"This error is raised when stakers attempt to exit the pool.\"}],\"UnstakeOperatorWithPartialAmount(address)\":[{\"notice\":\"This error is raised when attempting to unstake with partial amount by an operator.\"}],\"UnstakeWithZeroAmount(address)\":[{\"notice\":\"This error is raised when attempting to unstake with zero amount.\"}]},\"events\":{\"ControllerSet(address)\":{\"notice\":\"This event is emitted when the controller is set.\"},\"DelegationRewardSlashed(address,uint256)\":{\"notice\":\"This event is emitted when a node gets delegation reward slashed.\"},\"FrozenPrincipalClaimed(address,uint256)\":{\"notice\":\"This event is emitted when a staker claims frozen principal.\"},\"Locked(address,uint256)\":{\"notice\":\"This event is emitted when a node locks stake in the pool.\"},\"Migrated(address,uint256,uint256,uint256,bytes)\":{\"notice\":\"This event is emitted when a staker migrates their stake to the migration target.\"},\"MigrationTargetAccepted(address)\":{\"notice\":\"This event is emitted after a 7 day period has passed since a migration target is proposed, and the target is accepted.\"},\"MigrationTargetProposed(address)\":{\"notice\":\"This event is emitted when a migration target is proposed by the contract owner.\"},\"RewardClaimed(address,uint256)\":{\"notice\":\"This event is emitted when a staker claims base reward.\"},\"Staked(address,uint256,uint256)\":{\"notice\":\"This event is emitted when a staker adds stake to the pool.\"},\"Unlocked(address,uint256)\":{\"notice\":\"This event is emitted when a node unlocks stake in the pool.\"},\"Unstaked(address,uint256,uint256,uint256)\":{\"notice\":\"This event is emitted when a staker exits the pool.\"}},\"kind\":\"user\",\"methods\":{\"acceptMigrationTarget()\":{\"notice\":\"This function allows the contract owner to accept a proposed migration target address after a waiting period.\"},\"addOperators(address[])\":{\"notice\":\"Adds one or more operators to a list of operators\"},\"addReward(uint256,uint256)\":{\"notice\":\"This function can be called to add rewards to the pool when the reward is not depleted\"},\"claim()\":{\"notice\":\"This function allows community stakers to claim base rewards and frozen principals(if any).\"},\"claimFrozenPrincipal()\":{\"notice\":\"This function allows stakers to claim frozen principals.\"},\"claimReward()\":{\"notice\":\"This function allows stakers to claim base rewards.\"},\"emergencyPause()\":{\"notice\":\"This function pauses staking\"},\"emergencyUnpause()\":{\"notice\":\"This function unpauses staking\"},\"getCommunityStakersCount()\":{\"notice\":\"This count all community stakers that have a staking balance greater than 0.\"},\"getDelegatesCount()\":{\"notice\":\"Delegates count increases after an operator is added to the list of operators and stakes the required amount.\"},\"getLockedAmount(address)\":{\"notice\":\"This function returns the locked amount of a node.\"},\"getMigrationTarget()\":{\"notice\":\"This function returns the migration target contract address\"},\"getTotalDelegatedAmount()\":{\"notice\":\"Total delegated amount is calculated by dividing the total community staker staked amount by the delegation rate, i.e. totalDelegatedAmount = pool.totalCommunityStakedAmount / delegationRateDenominator\"},\"isActive()\":{\"notice\":\"The staking pool starts closed and only allows stakers to stake once it's opened\"},\"isOperator(address)\":{\"notice\":\"Returns true if an address is an operator\"},\"lock(address,uint256)\":{\"notice\":\"This function allows controller to lock staking amount for a node.\"},\"migrate(bytes)\":{\"notice\":\"This function allows stakers to migrate funds to a new staking pool.\"},\"newReward(uint256,uint256)\":{\"notice\":\"This function can be called to add rewards to the pool when the reward is depleted\"},\"proposeMigrationTarget(address)\":{\"notice\":\"This function allows the contract owner to set a proposed migration target address. If the migration target is valid it renounces the previously accepted migration target (if any).\"},\"setController(address)\":{\"notice\":\"Set controller contract address\"},\"setPoolConfig(uint256,uint256)\":{\"notice\":\"Set the pool config\"},\"slashDelegationReward(address,uint256)\":{\"notice\":\"This function allows controller to slash delegation reward of a node.\"},\"stake(uint256)\":{\"notice\":\"This function allows stakers to stake.\"},\"start(uint256,uint256)\":{\"notice\":\"Transfers ARPA tokens and initializes the reward\"},\"unlock(address,uint256)\":{\"notice\":\"This function allows controller to unlock staking amount for a node.\"},\"unstake(uint256)\":{\"notice\":\"This function allows stakers to unstake. It returns base and delegation rewards, and makes principle frozen for later claiming.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/Staking-v0.1/src/Staking.sol\":\"Staking\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":300},\"remappings\":[\":Staking-v0.1/=lib/Staking-v0.1/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/Staking-v0.1/src/Staking.sol\":{\"keccak256\":\"0xfae5a9d16286cf3ebb4312cab54a4775d0d6c8fee124cb5e06db9428e8c114a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94fa499fe14c4ec77b4955e11935f0ca704d8c92c36346d2f6aa8c90f64c47e3\",\"dweb:/ipfs/QmXu9ytWKpNbPZ21fhiDKssjiFCVcSPM5zigeSZnVKxbsj\"]},\"lib/Staking-v0.1/src/interfaces/IMigratable.sol\":{\"keccak256\":\"0xdcbea6ba5bc890aed9b5f975b9e6b966d9d57e9b06a0fa97b3284563dfb319e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d3f167729c0d72f9c496979fecc6308f68507c348133b7d36ac69107089ef61\",\"dweb:/ipfs/QmP5aNgDW3MZdExh8uFwE8cgbLbyB4nVdGGi5Fcxj5Es4C\"]},\"lib/Staking-v0.1/src/interfaces/IMigrationTarget.sol\":{\"keccak256\":\"0xb64a6d220eef97a465ea69fb1ff126e243f95d0f47d420cc4dc92689eacec29c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c444eff2a431d19626e5454c1e279ac6aa0996fbe499a4604d5008c4381103d8\",\"dweb:/ipfs/Qmd9ntjiZpMv2ZRG5QnauFiPaftHCEVrs4GpaytMeATRth\"]},\"lib/Staking-v0.1/src/interfaces/INodeStaking.sol\":{\"keccak256\":\"0x61fc4eedf6e2a273668363fca439f533fed249e6de11b79ff2bd26b6ff975963\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26dfe1e161b7bbe8f679a7629b9240925d0aca42f035f930c2e4eb01c9e164c\",\"dweb:/ipfs/QmTpM3TdfFVN8D6YdodfMwLwbEPXeG1oV38NKTt7qM99C8\"]},\"lib/Staking-v0.1/src/interfaces/IStaking.sol\":{\"keccak256\":\"0x7c6816885cf02c893d8b310526119431e819503eca410407e8a8220533c3cddd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab88960f01ff0f2a7cd57cd72cae3b8406ff409a0c4d0634487fc85543accab0\",\"dweb:/ipfs/Qmf3yUa6NKm4CLvTe2ie6HU4jrCBRRPvBhTR4mUWW7ovP9\"]},\"lib/Staking-v0.1/src/interfaces/IStakingOwner.sol\":{\"keccak256\":\"0x8b5d9ad89d4b3232278220cfbf2d923173e9adbd709d918918bd7010083ef2eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d59dd6fe7312cf78cacbaf444333c916bedf91dcc9cfdfe9684d62edb85fdb8\",\"dweb:/ipfs/QmZPRxQDxN2ZyJFaZngEpQDK5HXQVqhx7ChA69Jp5JS3yu\"]},\"lib/Staking-v0.1/src/interfaces/TypeAndVersionInterface.sol\":{\"keccak256\":\"0x9b822b01bed3d2de1e63da99475df2f31e46567c59e75297c27ef867d462e437\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30903a5f2f7cd0b066c4c884c0a062282ee9c1590316f2e48ce423b558241f1a\",\"dweb:/ipfs/QmeF648BxynwJ6XQZyzAFZYuTXTtdsxWm94T7TAaSzQ9RW\"]},\"lib/Staking-v0.1/src/libraries/RewardLib.sol\":{\"keccak256\":\"0x8288d5fed978e7c70f766bc67e9eddaab9c0527ccbb36adade79bfba447c42cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://670c03e12aa7cf527345aa45490e88f7da38bb3044310e8af2e7328c559fd184\",\"dweb:/ipfs/QmZUE7UhgTm8pgoYZtmxLXZA8kFi7SBajS7pf1odWNvRxP\"]},\"lib/Staking-v0.1/src/libraries/SafeCast.sol\":{\"keccak256\":\"0xd5982cf8f01665faaea59554ccbbb6072567be60f3d3e112a7e60df4d1b1eab7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cefc1390ff02017d6c01f5f8a154ba923c707cd7845b5f5ddffaf5b6c1d81f37\",\"dweb:/ipfs/QmdDfFDPp4HjBrE4iGpP8zmwxyKTXSKFu2ZkbdAnaJphCT\"]},\"lib/Staking-v0.1/src/libraries/StakingPoolLib.sol\":{\"keccak256\":\"0xfdf304ea35cbbf910eada9de41fffc7ee733e72085820b04576b4f29f16b6287\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3888fde893ab24788596b443d6a9e848035662b64f14c793f55f7b723c92f804\",\"dweb:/ipfs/QmY9Hcu1vf1cquL57gNBi7vhHrLo9vC9QiEVkQ25Urq5RJ\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xd04b0f06e0666f29cf7cccc82894de541e19bb30a765b107b1e40bb7fe5f7d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b652499d098e88d8d878374616bb58434301061cae2253298b3f374044e0ddb\",\"dweb:/ipfs/QmbhAzctqo5jrSKU6idHdVyqfmzCcDbNUPvmx4GiXxfA6q\"]},\"lib/openzeppelin-contracts/contracts/security/Pausable.sol\":{\"keccak256\":\"0x0849d93b16c9940beb286a7864ed02724b248b93e0d80ef6355af5ef15c64773\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ddabb16009cd17eaca3143feadf450ac13e72919ebe2ca50e00f61cb78bc004\",\"dweb:/ipfs/QmSPwPxX7d6TTWakN5jy5wsaGkS1y9TW8fuhGSraMkLk2B\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x41506aed9d344097236aaff05216674af38e177288787519d49b71f6396c4af8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a4a1d11e3e7c610b12da694f3d406527027e7963cfb7bf302af0b902615d7e\",\"dweb:/ipfs/QmeDwStpqytetvjaq7KA7cQRVPDwxmZySYdEXkvw2DDxsr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x2e53602b96c1bf97c731ed3e2a981b4f85e23a9410a5ebd36e549a4cc93340dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://523f47b3ecc6d4e47b4b998d3356199988eef8a42a10dff5a3660d5f9e76cc71\",\"dweb:/ipfs/QmRLH8CNvDsuLzNCjsbpLM3RHD9he5ESXroYoDT3tpaTCA\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x5d9242699672087b2f423dfab23a3b8326448f58da4e38cd9e4ba6a3e7e153a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa2d66521307fbe5942f90c0fed06bf9269e2a083b5d0d57861da938e83fa8b4\",\"dweb:/ipfs/QmPAJDLtTqWX6XTekr5WZEPgNPYReADj1Z4wbt3YPWmB1b\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.18+commit.87f61d96" }, "language": "Solidity", "output": { "abi": [ { "inputs": [ { "internalType": "struct Staking.PoolConstructorParams", "name": "params", "type": "tuple", "components": [ { "internalType": "contract IERC20", "name": "arpa", "type": "address" }, { "internalType": "uint256", "name": "initialMaxPoolSize", "type": "uint256" }, { "internalType": "uint256", "name": "initialMaxCommunityStakeAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minCommunityStakeAmount", "type": "uint256" }, { "internalType": "uint256", "name": "operatorStakeAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minInitialOperatorCount", "type": "uint256" }, { "internalType": "uint256", "name": "minRewardDuration", "type": "uint256" }, { "internalType": "uint256", "name": "delegationRateDenominator", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeFreezingDuration", "type": "uint256" } ] } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "type": "error", "name": "AccessForbidden" }, { "inputs": [], "type": "error", "name": "AlreadyInitialized" }, { "inputs": [], "type": "error", "name": "CastError" }, { "inputs": [ { "internalType": "uint256", "name": "remainingAmount", "type": "uint256" } ], "type": "error", "name": "ExcessiveStakeAmount" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "type": "error", "name": "ExistingLockedStakeFound" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "type": "error", "name": "ExistingStakeFound" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "type": "error", "name": "FrozenPrincipalDoesNotExist" }, { "inputs": [ { "internalType": "uint256", "name": "currentOperatorsCount", "type": "uint256" }, { "internalType": "uint256", "name": "minInitialOperatorsCount", "type": "uint256" } ], "type": "error", "name": "InadequateInitialOperatorsCount" }, { "inputs": [ { "internalType": "uint256", "name": "currentLockedStakingAmount", "type": "uint256" } ], "type": "error", "name": "InadequateOperatorLockedStakingAmount" }, { "inputs": [ { "internalType": "uint256", "name": "currentStakingAmount", "type": "uint256" } ], "type": "error", "name": "InadequateStakingAmount" }, { "inputs": [ { "internalType": "uint256", "name": "requiredAmount", "type": "uint256" } ], "type": "error", "name": "InsufficientStakeAmount" }, { "inputs": [], "type": "error", "name": "InvalidDelegationRate" }, { "inputs": [ { "internalType": "uint256", "name": "maxStakeAmount", "type": "uint256" } ], "type": "error", "name": "InvalidMaxStakeAmount" }, { "inputs": [], "type": "error", "name": "InvalidMigrationTarget" }, { "inputs": [], "type": "error", "name": "InvalidMinCommunityStakeAmount" }, { "inputs": [], "type": "error", "name": "InvalidOperatorStakeAmount" }, { "inputs": [ { "internalType": "uint256", "name": "maxPoolSize", "type": "uint256" } ], "type": "error", "name": "InvalidPoolSize" }, { "inputs": [ { "internalType": "bool", "name": "currentStatus", "type": "bool" }, { "internalType": "bool", "name": "requiredStatus", "type": "bool" } ], "type": "error", "name": "InvalidPoolStatus" }, { "inputs": [], "type": "error", "name": "InvalidZeroAddress" }, { "inputs": [], "type": "error", "name": "NoBaseRewardForOperator" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "type": "error", "name": "OperatorAlreadyExists" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "type": "error", "name": "OperatorDoesNotExist" }, { "inputs": [], "type": "error", "name": "RewardDurationTooShort" }, { "inputs": [], "type": "error", "name": "SenderNotController" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "type": "error", "name": "StakeNotFound" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "type": "error", "name": "UnstakeOperatorWithPartialAmount" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "type": "error", "name": "UnstakeWithZeroAmount" }, { "inputs": [ { "internalType": "address", "name": "controller", "type": "address", "indexed": false } ], "type": "event", "name": "ControllerSet", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false } ], "type": "event", "name": "DelegationRewardSlashed", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "principal", "type": "uint256", "indexed": false } ], "type": "event", "name": "FrozenPrincipalClaimed", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "newLock", "type": "uint256", "indexed": false } ], "type": "event", "name": "Locked", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "principal", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "baseReward", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "delegationReward", "type": "uint256", "indexed": false }, { "internalType": "bytes", "name": "data", "type": "bytes", "indexed": false } ], "type": "event", "name": "Migrated", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "migrationTarget", "type": "address", "indexed": false } ], "type": "event", "name": "MigrationTargetAccepted", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "migrationTarget", "type": "address", "indexed": false } ], "type": "event", "name": "MigrationTargetProposed", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "previousOwner", "type": "address", "indexed": true }, { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true } ], "type": "event", "name": "OwnershipTransferred", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address", "indexed": false } ], "type": "event", "name": "Paused", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "baseReward", "type": "uint256", "indexed": false } ], "type": "event", "name": "RewardClaimed", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "newStake", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "totalStake", "type": "uint256", "indexed": false } ], "type": "event", "name": "Staked", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "arpaAddress", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "initialMaxPoolSize", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "initialMaxCommunityStakeAmount", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "minCommunityStakeAmount", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "operatorStakeAmount", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "minInitialOperatorCount", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "minRewardDuration", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "delegationRateDenominator", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "unstakeFreezingDuration", "type": "uint256", "indexed": false } ], "type": "event", "name": "StakingConfigSet", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "newUnlock", "type": "uint256", "indexed": false } ], "type": "event", "name": "Unlocked", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address", "indexed": false } ], "type": "event", "name": "Unpaused", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "principal", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "baseReward", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "delegationReward", "type": "uint256", "indexed": false } ], "type": "event", "name": "Unstaked", "anonymous": false }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "acceptMigrationTarget" }, { "inputs": [ { "internalType": "address[]", "name": "operators", "type": "address[]" } ], "stateMutability": "nonpayable", "type": "function", "name": "addOperators" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "rewardDuration", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "addReward" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "claim" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "claimFrozenPrincipal" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "claimReward" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "emergencyPause" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "emergencyUnpause" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getArpaToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getAvailableReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "getBaseReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "getClaimablePrincipalAmount", "outputs": [ { "internalType": "uint256", "name": "claimingPrincipal", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getCommunityStakerLimits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getCommunityStakersCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getController", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getDelegatesCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getDelegationRateDenominator", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "getDelegationReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "getFrozenPrincipal", "outputs": [ { "internalType": "uint96[]", "name": "amounts", "type": "uint96[]" }, { "internalType": "uint256[]", "name": "unlockTimestamps", "type": "uint256[]" } ] }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "getLockedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getMaxPoolSize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getMigrationTarget", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getOperatorLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getRewardRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getRewardTimestamps", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "getStake", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getTotalCommunityStakedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getTotalDelegatedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getTotalFrozenAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getTotalStakedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "isActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "isOperator", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "lock" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function", "name": "migrate" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "rewardDuration", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "newReward" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [ { "internalType": "address", "name": "migrationTarget", "type": "address" } ], "stateMutability": "nonpayable", "type": "function", "name": "proposeMigrationTarget" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "renounceOwnership" }, { "inputs": [ { "internalType": "address", "name": "controller", "type": "address" } ], "stateMutability": "nonpayable", "type": "function", "name": "setController" }, { "inputs": [ { "internalType": "uint256", "name": "maxPoolSize", "type": "uint256" }, { "internalType": "uint256", "name": "maxCommunityStakeAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "setPoolConfig" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "slashDelegationReward" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "stake" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "rewardDuration", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "start" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "stateMutability": "nonpayable", "type": "function", "name": "transferOwnership" }, { "inputs": [], "stateMutability": "pure", "type": "function", "name": "typeAndVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ] }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "unlock" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "unstake" } ], "devdoc": { "kind": "dev", "methods": { "addOperators(address[])": { "details": "Required conditions for adding operators: - Operators can only be added to the pool if they have no prior stake. - Operators cannot be added to the pool after staking ends.", "params": { "operators": "A list of operator addresses to add" } }, "addReward(uint256,uint256)": { "details": "Should only be callable by the owner", "params": { "amount": "The amount of rewards to add to the pool", "rewardDuration": "The duration of the reward" } }, "emergencyPause()": { "details": "Sets the pause flag to true" }, "emergencyUnpause()": { "details": "Sets the pause flag to false" }, "getArpaToken()": { "returns": { "_0": "address ARPA token contract's address that is used by the pool" } }, "getAvailableReward()": { "details": "This reflects how many rewards were made available over the lifetime of the staking pool.", "returns": { "_0": "uint256 total amount of ARPA tokens made available for rewards in ARPA wei" } }, "getBaseReward(address)": { "returns": { "_0": "uint256 amount of base rewards earned by a staker in ARPA wei" } }, "getClaimablePrincipalAmount(address)": { "returns": { "claimingPrincipal": "uint256 amount of ARPA wei that can be claimed as frozen principal by a staker" } }, "getCommunityStakerLimits()": { "returns": { "_0": "uint256 minimum amount that can be staked by a community staker", "_1": "uint256 maximum amount that can be staked by a community staker" } }, "getCommunityStakersCount()": { "returns": { "_0": "uint256 number of staking community stakers that are eligible for base rewards" } }, "getController()": { "returns": { "_0": "address controller contract's address that is used by the pool" } }, "getDelegatesCount()": { "returns": { "_0": "uint256 number of staking operators that are eligible for delegation rewards" } }, "getDelegationRateDenominator()": { "returns": { "_0": "uint256 current delegation rate" } }, "getDelegationReward(address)": { "returns": { "_0": "uint256 amount of delegation rewards earned by an operator in ARPA wei" } }, "getFrozenPrincipal(address)": { "returns": { "amounts": "total amounts of ARPA wei that is currently frozen by the staker", "unlockTimestamps": "timestamps when the frozen principal can be withdrawn" } }, "getLockedAmount(address)": { "params": { "staker": "Node address" } }, "getMaxPoolSize()": { "returns": { "_0": "uint256 current maximum staking pool size" } }, "getOperatorLimit()": { "returns": { "_0": "uint256 amount that should be staked by an operator" } }, "getRewardRate()": { "returns": { "_0": "uint256 current reward rate, expressed in arpa weis per second" } }, "getRewardTimestamps()": { "returns": { "_0": "uint256 reward initialization timestamp", "_1": "uint256 reward expiry timestamp" } }, "getStake(address)": { "params": { "staker": "address" }, "returns": { "_0": "uint256 staker's staked principal amount" } }, "getTotalCommunityStakedAmount()": { "returns": { "_0": "uint256 total amount staked by community stakers in ARPA wei" } }, "getTotalDelegatedAmount()": { "returns": { "_0": "uint256 staked amount that is used when calculating delegation rewards in ARPA wei" } }, "getTotalFrozenAmount()": { "details": "Used to make sure that contract's balance is correct. total staked amount + total frozen amount + available rewards = current balance", "returns": { "_0": "uint256 the sum of frozen operator principals that have not been withdrawn from the staking pool in ARPA wei." } }, "getTotalStakedAmount()": { "returns": { "_0": "uint256 total amount staked by community stakers and operators in ARPA wei" } }, "isActive()": { "returns": { "_0": "bool pool status" } }, "lock(address,uint256)": { "params": { "amount": "Amount to lock", "staker": "Node address" } }, "migrate(bytes)": { "params": { "data": "Migration path details" } }, "newReward(uint256,uint256)": { "details": "Should only callable by the Owner", "params": { "amount": "The amount of rewards to add to the pool", "rewardDuration": "The duration of the reward" } }, "owner()": { "details": "Returns the address of the current owner." }, "paused()": { "details": "Returns true if the contract is paused, and false otherwise." }, "proposeMigrationTarget(address)": { "params": { "migrationTarget": "Contract address to migrate stakes to." } }, "renounceOwnership()": { "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." }, "setController(address)": { "details": "Should only be callable by the owner", "params": { "controller": "The address of the controller contract" } }, "setPoolConfig(uint256,uint256)": { "params": { "maxCommunityStakeAmount": "The max amount of ARPA a community staker can stake", "maxPoolSize": "The max amount of staked ARPA by community stakers allowed in the pool" } }, "slashDelegationReward(address,uint256)": { "params": { "amount": "Amount to slash", "staker": "Node address" } }, "start(uint256,uint256)": { "details": "Uses ERC20 approve + transferFrom flow", "params": { "amount": "rewards amount in ARPA", "rewardDuration": "rewards duration in seconds" } }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." }, "unlock(address,uint256)": { "params": { "amount": "Amount to unlock", "staker": "Node address" } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "acceptMigrationTarget()": { "notice": "This function allows the contract owner to accept a proposed migration target address after a waiting period." }, "addOperators(address[])": { "notice": "Adds one or more operators to a list of operators" }, "addReward(uint256,uint256)": { "notice": "This function can be called to add rewards to the pool when the reward is not depleted" }, "claim()": { "notice": "This function allows community stakers to claim base rewards and frozen principals(if any)." }, "claimFrozenPrincipal()": { "notice": "This function allows stakers to claim frozen principals." }, "claimReward()": { "notice": "This function allows stakers to claim base rewards." }, "emergencyPause()": { "notice": "This function pauses staking" }, "emergencyUnpause()": { "notice": "This function unpauses staking" }, "getCommunityStakersCount()": { "notice": "This count all community stakers that have a staking balance greater than 0." }, "getDelegatesCount()": { "notice": "Delegates count increases after an operator is added to the list of operators and stakes the required amount." }, "getLockedAmount(address)": { "notice": "This function returns the locked amount of a node." }, "getMigrationTarget()": { "notice": "This function returns the migration target contract address" }, "getTotalDelegatedAmount()": { "notice": "Total delegated amount is calculated by dividing the total community staker staked amount by the delegation rate, i.e. totalDelegatedAmount = pool.totalCommunityStakedAmount / delegationRateDenominator" }, "isActive()": { "notice": "The staking pool starts closed and only allows stakers to stake once it's opened" }, "isOperator(address)": { "notice": "Returns true if an address is an operator" }, "lock(address,uint256)": { "notice": "This function allows controller to lock staking amount for a node." }, "migrate(bytes)": { "notice": "This function allows stakers to migrate funds to a new staking pool." }, "newReward(uint256,uint256)": { "notice": "This function can be called to add rewards to the pool when the reward is depleted" }, "proposeMigrationTarget(address)": { "notice": "This function allows the contract owner to set a proposed migration target address. If the migration target is valid it renounces the previously accepted migration target (if any)." }, "setController(address)": { "notice": "Set controller contract address" }, "setPoolConfig(uint256,uint256)": { "notice": "Set the pool config" }, "slashDelegationReward(address,uint256)": { "notice": "This function allows controller to slash delegation reward of a node." }, "stake(uint256)": { "notice": "This function allows stakers to stake." }, "start(uint256,uint256)": { "notice": "Transfers ARPA tokens and initializes the reward" }, "unlock(address,uint256)": { "notice": "This function allows controller to unlock staking amount for a node." }, "unstake(uint256)": { "notice": "This function allows stakers to unstake. It returns base and delegation rewards, and makes principle frozen for later claiming." } }, "version": 1 } }, "settings": { "remappings": [ ":Staking-v0.1/=lib/Staking-v0.1/src/", ":ds-test/=lib/forge-std/lib/ds-test/src/", ":forge-std/=lib/forge-std/src/", ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", ":openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 300 }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "lib/Staking-v0.1/src/Staking.sol": "Staking" }, "libraries": {} }, "sources": { "lib/Staking-v0.1/src/Staking.sol": { "keccak256": "0xfae5a9d16286cf3ebb4312cab54a4775d0d6c8fee124cb5e06db9428e8c114a8", "urls": [ "bzz-raw://94fa499fe14c4ec77b4955e11935f0ca704d8c92c36346d2f6aa8c90f64c47e3", "dweb:/ipfs/QmXu9ytWKpNbPZ21fhiDKssjiFCVcSPM5zigeSZnVKxbsj" ], "license": "MIT" }, "lib/Staking-v0.1/src/interfaces/IMigratable.sol": { "keccak256": "0xdcbea6ba5bc890aed9b5f975b9e6b966d9d57e9b06a0fa97b3284563dfb319e4", "urls": [ "bzz-raw://8d3f167729c0d72f9c496979fecc6308f68507c348133b7d36ac69107089ef61", "dweb:/ipfs/QmP5aNgDW3MZdExh8uFwE8cgbLbyB4nVdGGi5Fcxj5Es4C" ], "license": "MIT" }, "lib/Staking-v0.1/src/interfaces/IMigrationTarget.sol": { "keccak256": "0xb64a6d220eef97a465ea69fb1ff126e243f95d0f47d420cc4dc92689eacec29c", "urls": [ "bzz-raw://c444eff2a431d19626e5454c1e279ac6aa0996fbe499a4604d5008c4381103d8", "dweb:/ipfs/Qmd9ntjiZpMv2ZRG5QnauFiPaftHCEVrs4GpaytMeATRth" ], "license": "MIT" }, "lib/Staking-v0.1/src/interfaces/INodeStaking.sol": { "keccak256": "0x61fc4eedf6e2a273668363fca439f533fed249e6de11b79ff2bd26b6ff975963", "urls": [ "bzz-raw://e26dfe1e161b7bbe8f679a7629b9240925d0aca42f035f930c2e4eb01c9e164c", "dweb:/ipfs/QmTpM3TdfFVN8D6YdodfMwLwbEPXeG1oV38NKTt7qM99C8" ], "license": "MIT" }, "lib/Staking-v0.1/src/interfaces/IStaking.sol": { "keccak256": "0x7c6816885cf02c893d8b310526119431e819503eca410407e8a8220533c3cddd", "urls": [ "bzz-raw://ab88960f01ff0f2a7cd57cd72cae3b8406ff409a0c4d0634487fc85543accab0", "dweb:/ipfs/Qmf3yUa6NKm4CLvTe2ie6HU4jrCBRRPvBhTR4mUWW7ovP9" ], "license": "MIT" }, "lib/Staking-v0.1/src/interfaces/IStakingOwner.sol": { "keccak256": "0x8b5d9ad89d4b3232278220cfbf2d923173e9adbd709d918918bd7010083ef2eb", "urls": [ "bzz-raw://6d59dd6fe7312cf78cacbaf444333c916bedf91dcc9cfdfe9684d62edb85fdb8", "dweb:/ipfs/QmZPRxQDxN2ZyJFaZngEpQDK5HXQVqhx7ChA69Jp5JS3yu" ], "license": "MIT" }, "lib/Staking-v0.1/src/interfaces/TypeAndVersionInterface.sol": { "keccak256": "0x9b822b01bed3d2de1e63da99475df2f31e46567c59e75297c27ef867d462e437", "urls": [ "bzz-raw://30903a5f2f7cd0b066c4c884c0a062282ee9c1590316f2e48ce423b558241f1a", "dweb:/ipfs/QmeF648BxynwJ6XQZyzAFZYuTXTtdsxWm94T7TAaSzQ9RW" ], "license": "MIT" }, "lib/Staking-v0.1/src/libraries/RewardLib.sol": { "keccak256": "0x8288d5fed978e7c70f766bc67e9eddaab9c0527ccbb36adade79bfba447c42cd", "urls": [ "bzz-raw://670c03e12aa7cf527345aa45490e88f7da38bb3044310e8af2e7328c559fd184", "dweb:/ipfs/QmZUE7UhgTm8pgoYZtmxLXZA8kFi7SBajS7pf1odWNvRxP" ], "license": "MIT" }, "lib/Staking-v0.1/src/libraries/SafeCast.sol": { "keccak256": "0xd5982cf8f01665faaea59554ccbbb6072567be60f3d3e112a7e60df4d1b1eab7", "urls": [ "bzz-raw://cefc1390ff02017d6c01f5f8a154ba923c707cd7845b5f5ddffaf5b6c1d81f37", "dweb:/ipfs/QmdDfFDPp4HjBrE4iGpP8zmwxyKTXSKFu2ZkbdAnaJphCT" ], "license": "MIT" }, "lib/Staking-v0.1/src/libraries/StakingPoolLib.sol": { "keccak256": "0xfdf304ea35cbbf910eada9de41fffc7ee733e72085820b04576b4f29f16b6287", "urls": [ "bzz-raw://3888fde893ab24788596b443d6a9e848035662b64f14c793f55f7b723c92f804", "dweb:/ipfs/QmY9Hcu1vf1cquL57gNBi7vhHrLo9vC9QiEVkQ25Urq5RJ" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", "urls": [ "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol": { "keccak256": "0xd04b0f06e0666f29cf7cccc82894de541e19bb30a765b107b1e40bb7fe5f7d7a", "urls": [ "bzz-raw://7b652499d098e88d8d878374616bb58434301061cae2253298b3f374044e0ddb", "dweb:/ipfs/QmbhAzctqo5jrSKU6idHdVyqfmzCcDbNUPvmx4GiXxfA6q" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/security/Pausable.sol": { "keccak256": "0x0849d93b16c9940beb286a7864ed02724b248b93e0d80ef6355af5ef15c64773", "urls": [ "bzz-raw://4ddabb16009cd17eaca3143feadf450ac13e72919ebe2ca50e00f61cb78bc004", "dweb:/ipfs/QmSPwPxX7d6TTWakN5jy5wsaGkS1y9TW8fuhGSraMkLk2B" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", "urls": [ "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol": { "keccak256": "0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb", "urls": [ "bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0", "dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol": { "keccak256": "0x41506aed9d344097236aaff05216674af38e177288787519d49b71f6396c4af8", "urls": [ "bzz-raw://47a4a1d11e3e7c610b12da694f3d406527027e7963cfb7bf302af0b902615d7e", "dweb:/ipfs/QmeDwStpqytetvjaq7KA7cQRVPDwxmZySYdEXkvw2DDxsr" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Address.sol": { "keccak256": "0x2e53602b96c1bf97c731ed3e2a981b4f85e23a9410a5ebd36e549a4cc93340dc", "urls": [ "bzz-raw://523f47b3ecc6d4e47b4b998d3356199988eef8a42a10dff5a3660d5f9e76cc71", "dweb:/ipfs/QmRLH8CNvDsuLzNCjsbpLM3RHD9he5ESXroYoDT3tpaTCA" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Context.sol": { "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", "urls": [ "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", "urls": [ "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { "keccak256": "0x5d9242699672087b2f423dfab23a3b8326448f58da4e38cd9e4ba6a3e7e153a2", "urls": [ "bzz-raw://aa2d66521307fbe5942f90c0fed06bf9269e2a083b5d0d57861da938e83fa8b4", "dweb:/ipfs/QmPAJDLtTqWX6XTekr5WZEPgNPYReADj1Z4wbt3YPWmB1b" ], "license": "MIT" } }, "version": 1 }, "ast": { "absolutePath": "lib/Staking-v0.1/src/Staking.sol", "id": 2583, "exportedSymbols": { "IERC165": [ 34389 ], "IERC20": [ 33394 ], "IMigratable": [ 2633 ], "IMigrationTarget": [ 2644 ], "INodeStaking": [ 2705 ], "IStaking": [ 2932 ], "IStakingOwner": [ 3001 ], "Math": [ 35255 ], "Ownable": [ 32191 ], "Pausable": [ 32729 ], "RewardLib": [ 3585 ], "SafeCast": [ 3702 ], "SafeERC20": [ 33736 ], "Staking": [ 2582 ], "StakingPoolLib": [ 4134 ], "TypeAndVersionInterface": [ 3009 ] }, "nodeType": "SourceUnit", "src": "32:31157:0", "nodes": [ { "id": 1, "nodeType": "PragmaDirective", "src": "32:24:0", "nodes": [], "literals": [ "solidity", "^", "0.8", ".18" ] }, { "id": 4, "nodeType": "ImportDirective", "src": "58:99:0", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", "file": "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 33737, "symbolAliases": [ { "foreign": { "id": 2, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 33394, "src": "66:6:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { "id": 3, "name": "SafeERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 33736, "src": "74:9:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 6, "nodeType": "ImportDirective", "src": "158:81:0", "nodes": [], "absolutePath": "lib/Staking-v0.1/src/interfaces/TypeAndVersionInterface.sol", "file": "./interfaces/TypeAndVersionInterface.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 3010, "symbolAliases": [ { "foreign": { "id": 5, "name": "TypeAndVersionInterface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3009, "src": "166:23:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 8, "nodeType": "ImportDirective", "src": "240:80:0", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/security/Pausable.sol", "file": "openzeppelin-contracts/contracts/security/Pausable.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 32730, "symbolAliases": [ { "foreign": { "id": 7, "name": "Pausable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 32729, "src": "248:8:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 10, "nodeType": "ImportDirective", "src": "321:76:0", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", "file": "openzeppelin-contracts/contracts/access/Ownable.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 32192, "symbolAliases": [ { "foreign": { "id": 9, "name": "Ownable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 32191, "src": "329:7:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 12, "nodeType": "ImportDirective", "src": "398:80:0", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol", "file": "openzeppelin-contracts/contracts/interfaces/IERC165.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 32195, "symbolAliases": [ { "foreign": { "id": 11, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 34389, "src": "406:7:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 14, "nodeType": "ImportDirective", "src": "479:74:0", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", "file": "openzeppelin-contracts/contracts/utils/math/Math.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 35256, "symbolAliases": [ { "foreign": { "id": 13, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35255, "src": "487:4:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 16, "nodeType": "ImportDirective", "src": "554:51:0", "nodes": [], "absolutePath": "lib/Staking-v0.1/src/interfaces/IStaking.sol", "file": "./interfaces/IStaking.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 2933, "symbolAliases": [ { "foreign": { "id": 15, "name": "IStaking", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2932, "src": "562:8:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 18, "nodeType": "ImportDirective", "src": "606:61:0", "nodes": [], "absolutePath": "lib/Staking-v0.1/src/interfaces/IStakingOwner.sol", "file": "./interfaces/IStakingOwner.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 3002, "symbolAliases": [ { "foreign": { "id": 17, "name": "IStakingOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3001, "src": "614:13:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 20, "nodeType": "ImportDirective", "src": "668:59:0", "nodes": [], "absolutePath": "lib/Staking-v0.1/src/interfaces/INodeStaking.sol", "file": "./interfaces/INodeStaking.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 2706, "symbolAliases": [ { "foreign": { "id": 19, "name": "INodeStaking", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2705, "src": "676:12:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 22, "nodeType": "ImportDirective", "src": "728:57:0", "nodes": [], "absolutePath": "lib/Staking-v0.1/src/interfaces/IMigratable.sol", "file": "./interfaces/IMigratable.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 2634, "symbolAliases": [ { "foreign": { "id": 21, "name": "IMigratable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2633, "src": "736:11:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 24, "nodeType": "ImportDirective", "src": "786:62:0", "nodes": [], "absolutePath": "lib/Staking-v0.1/src/libraries/StakingPoolLib.sol", "file": "./libraries/StakingPoolLib.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 4135, "symbolAliases": [ { "foreign": { "id": 23, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "794:14:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 27, "nodeType": "ImportDirective", "src": "849:62:0", "nodes": [], "absolutePath": "lib/Staking-v0.1/src/libraries/RewardLib.sol", "file": "./libraries/RewardLib.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 3586, "symbolAliases": [ { "foreign": { "id": 25, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "857:9:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { "id": 26, "name": "SafeCast", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3702, "src": "868:8:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 29, "nodeType": "ImportDirective", "src": "912:67:0", "nodes": [], "absolutePath": "lib/Staking-v0.1/src/interfaces/IMigrationTarget.sol", "file": "./interfaces/IMigrationTarget.sol", "nameLocation": "-1:-1:-1", "scope": 2583, "sourceUnit": 2645, "symbolAliases": [ { "foreign": { "id": 28, "name": "IMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "920:16:0", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 2582, "nodeType": "ContractDefinition", "src": "981:30207:0", "nodes": [ { "id": 47, "nodeType": "UsingForDirective", "src": "1102:45:0", "nodes": [], "global": false, "libraryName": { "id": 44, "name": "StakingPoolLib", "nameLocations": [ "1108:14:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 4134, "src": "1108:14:0" }, "typeName": { "id": 46, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 45, "name": "StakingPoolLib.Pool", "nameLocations": [ "1127:14:0", "1142:4:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3853, "src": "1127:19:0" }, "referencedDeclaration": 3853, "src": "1127:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage_ptr", "typeString": "struct StakingPoolLib.Pool" } } }, { "id": 51, "nodeType": "UsingForDirective", "src": "1152:37:0", "nodes": [], "global": false, "libraryName": { "id": 48, "name": "RewardLib", "nameLocations": [ "1158:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3585, "src": "1158:9:0" }, "typeName": { "id": 50, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49, "name": "RewardLib.Reward", "nameLocations": [ "1172:9:0", "1182:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3094, "src": "1172:16:0" }, "referencedDeclaration": 3094, "src": "1172:16:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage_ptr", "typeString": "struct RewardLib.Reward" } } }, { "id": 54, "nodeType": "UsingForDirective", "src": "1194:27:0", "nodes": [], "global": false, "libraryName": { "id": 52, "name": "SafeCast", "nameLocations": [ "1200:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3702, "src": "1200:8:0" }, "typeName": { "id": 53, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1213:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "id": 58, "nodeType": "UsingForDirective", "src": "1226:27:0", "nodes": [], "global": false, "libraryName": { "id": 55, "name": "SafeERC20", "nameLocations": [ "1232:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 33736, "src": "1232:9:0" }, "typeName": { "id": 57, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 56, "name": "IERC20", "nameLocations": [ "1246:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 33394, "src": "1246:6:0" }, "referencedDeclaration": 33394, "src": "1246:6:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } } }, { "id": 87, "nodeType": "StructDefinition", "src": "1362:1144:0", "nodes": [], "canonicalName": "Staking.PoolConstructorParams", "members": [ { "constant": false, "id": 62, "mutability": "mutable", "name": "arpa", "nameLocation": "1443:4:0", "nodeType": "VariableDeclaration", "scope": 87, "src": "1436:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" }, "typeName": { "id": 61, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 60, "name": "IERC20", "nameLocations": [ "1436:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 33394, "src": "1436:6:0" }, "referencedDeclaration": 33394, "src": "1436:6:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "visibility": "internal" }, { "constant": false, "id": 65, "mutability": "mutable", "name": "initialMaxPoolSize", "nameLocation": "1543:18:0", "nodeType": "VariableDeclaration", "scope": 87, "src": "1535:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 64, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1535:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 68, "mutability": "mutable", "name": "initialMaxCommunityStakeAmount", "nameLocation": "1662:30:0", "nodeType": "VariableDeclaration", "scope": 87, "src": "1654:38:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 67, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1654:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 71, "mutability": "mutable", "name": "minCommunityStakeAmount", "nameLocation": "1789:23:0", "nodeType": "VariableDeclaration", "scope": 87, "src": "1781:31:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 70, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1781:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 74, "mutability": "mutable", "name": "operatorStakeAmount", "nameLocation": "1897:19:0", "nodeType": "VariableDeclaration", "scope": 87, "src": "1889:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 73, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1889:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 77, "mutability": "mutable", "name": "minInitialOperatorCount", "nameLocation": "2044:23:0", "nodeType": "VariableDeclaration", "scope": 87, "src": "2036:31:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 76, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2036:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 80, "mutability": "mutable", "name": "minRewardDuration", "nameLocation": "2198:17:0", "nodeType": "VariableDeclaration", "scope": 87, "src": "2190:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 79, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2190:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 83, "mutability": "mutable", "name": "delegationRateDenominator", "nameLocation": "2363:25:0", "nodeType": "VariableDeclaration", "scope": 87, "src": "2355:33:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 82, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2355:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 86, "mutability": "mutable", "name": "unstakeFreezingDuration", "nameLocation": "2476:23:0", "nodeType": "VariableDeclaration", "scope": 87, "src": "2468:31:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2468:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "name": "PoolConstructorParams", "nameLocation": "1369:21:0", "scope": 2582, "visibility": "public" }, { "id": 90, "nodeType": "VariableDeclaration", "src": "2512:31:0", "nodes": [], "constant": false, "mutability": "immutable", "name": "_arpa", "nameLocation": "2538:5:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" }, "typeName": { "id": 89, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 88, "name": "IERC20", "nameLocations": [ "2512:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 33394, "src": "2512:6:0" }, "referencedDeclaration": 33394, "src": "2512:6:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "visibility": "internal" }, { "id": 93, "nodeType": "VariableDeclaration", "src": "2549:34:0", "nodes": [], "constant": false, "mutability": "mutable", "name": "_pool", "nameLocation": "2578:5:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool" }, "typeName": { "id": 92, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 91, "name": "StakingPoolLib.Pool", "nameLocations": [ "2549:14:0", "2564:4:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3853, "src": "2549:19:0" }, "referencedDeclaration": 3853, "src": "2549:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage_ptr", "typeString": "struct StakingPoolLib.Pool" } }, "visibility": "internal" }, { "id": 96, "nodeType": "VariableDeclaration", "src": "2589:33:0", "nodes": [], "constant": false, "mutability": "mutable", "name": "_reward", "nameLocation": "2615:7:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward" }, "typeName": { "id": 95, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 94, "name": "RewardLib.Reward", "nameLocations": [ "2589:9:0", "2599:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3094, "src": "2589:16:0" }, "referencedDeclaration": 3094, "src": "2589:16:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage_ptr", "typeString": "struct RewardLib.Reward" } }, "visibility": "internal" }, { "id": 99, "nodeType": "VariableDeclaration", "src": "2683:28:0", "nodes": [], "constant": false, "documentation": { "id": 97, "nodeType": "StructuredDocumentation", "src": "2628:50:0", "text": "@notice The address of the controller contract" }, "mutability": "mutable", "name": "_controller", "nameLocation": "2700:11:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 98, "name": "address", "nodeType": "ElementaryTypeName", "src": "2683:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "id": 102, "nodeType": "VariableDeclaration", "src": "2784:41:0", "nodes": [], "constant": false, "documentation": { "id": 100, "nodeType": "StructuredDocumentation", "src": "2717:62:0", "text": "@notice The proposed address stakers will migrate funds to" }, "mutability": "mutable", "name": "_proposedMigrationTarget", "nameLocation": "2801:24:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 101, "name": "address", "nodeType": "ElementaryTypeName", "src": "2784:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "id": 105, "nodeType": "VariableDeclaration", "src": "2906:43:0", "nodes": [], "constant": false, "documentation": { "id": 103, "nodeType": "StructuredDocumentation", "src": "2831:70:0", "text": "@notice The timestamp of when the migration target was proposed at" }, "mutability": "mutable", "name": "_proposedMigrationTargetAt", "nameLocation": "2923:26:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 104, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2906:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "id": 108, "nodeType": "VariableDeclaration", "src": "3018:33:0", "nodes": [], "constant": false, "documentation": { "id": 106, "nodeType": "StructuredDocumentation", "src": "2955:58:0", "text": "@notice The address stakers can migrate their funds to" }, "mutability": "mutable", "name": "_migrationTarget", "nameLocation": "3035:16:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 107, "name": "address", "nodeType": "ElementaryTypeName", "src": "3018:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "id": 111, "nodeType": "VariableDeclaration", "src": "3125:47:0", "nodes": [], "constant": false, "documentation": { "id": 109, "nodeType": "StructuredDocumentation", "src": "3058:62:0", "text": "@notice The stake amount that a node operator should stake" }, "mutability": "immutable", "name": "_operatorStakeAmount", "nameLocation": "3152:20:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 110, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3125:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "id": 114, "nodeType": "VariableDeclaration", "src": "3253:51:0", "nodes": [], "constant": false, "documentation": { "id": 112, "nodeType": "StructuredDocumentation", "src": "3178:70:0", "text": "@notice The minimum stake amount that a community staker can stake" }, "mutability": "immutable", "name": "_minCommunityStakeAmount", "nameLocation": "3280:24:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 113, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3253:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "id": 117, "nodeType": "VariableDeclaration", "src": "3412:51:0", "nodes": [], "constant": false, "documentation": { "id": 115, "nodeType": "StructuredDocumentation", "src": "3310:97:0", "text": "@notice The minimum number of node operators required to initialize the\n staking pool." }, "mutability": "immutable", "name": "_minInitialOperatorCount", "nameLocation": "3439:24:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 116, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3412:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "id": 120, "nodeType": "VariableDeclaration", "src": "3574:45:0", "nodes": [], "constant": false, "documentation": { "id": 118, "nodeType": "StructuredDocumentation", "src": "3469:100:0", "text": "@notice The minimum reward duration after pool config updates and pool\n reward extensions" }, "mutability": "immutable", "name": "_minRewardDuration", "nameLocation": "3601:18:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 119, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3574:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "id": 123, "nodeType": "VariableDeclaration", "src": "3747:53:0", "nodes": [], "constant": false, "documentation": { "id": 121, "nodeType": "StructuredDocumentation", "src": "3625:117:0", "text": "@notice Used to calculate delegated stake amount\n = amount / delegation rate denominator = 100% / 100 = 1%" }, "mutability": "immutable", "name": "_delegationRateDenominator", "nameLocation": "3774:26:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 122, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3747:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "id": 126, "nodeType": "VariableDeclaration", "src": "3870:51:0", "nodes": [], "constant": false, "documentation": { "id": 124, "nodeType": "StructuredDocumentation", "src": "3806:59:0", "text": "@notice The freeze duration for stakers after unstaking" }, "mutability": "immutable", "name": "_unstakeFreezingDuration", "nameLocation": "3897:24:0", "scope": 2582, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 125, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3870:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "id": 146, "nodeType": "EventDefinition", "src": "3928:380:0", "nodes": [], "anonymous": false, "eventSelector": "4f5fcb1be0e233ce19a3f1a9544465fca14a2e18bb8d6e4821ed92d0c6272b3a", "name": "StakingConfigSet", "nameLocation": "3934:16:0", "parameters": { "id": 145, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 128, "indexed": false, "mutability": "mutable", "name": "arpaAddress", "nameLocation": "3968:11:0", "nodeType": "VariableDeclaration", "scope": 146, "src": "3960:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 127, "name": "address", "nodeType": "ElementaryTypeName", "src": "3960:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 130, "indexed": false, "mutability": "mutable", "name": "initialMaxPoolSize", "nameLocation": "3997:18:0", "nodeType": "VariableDeclaration", "scope": 146, "src": "3989:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 129, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3989:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 132, "indexed": false, "mutability": "mutable", "name": "initialMaxCommunityStakeAmount", "nameLocation": "4033:30:0", "nodeType": "VariableDeclaration", "scope": 146, "src": "4025:38:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 131, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4025:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 134, "indexed": false, "mutability": "mutable", "name": "minCommunityStakeAmount", "nameLocation": "4081:23:0", "nodeType": "VariableDeclaration", "scope": 146, "src": "4073:31:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4073:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 136, "indexed": false, "mutability": "mutable", "name": "operatorStakeAmount", "nameLocation": "4122:19:0", "nodeType": "VariableDeclaration", "scope": 146, "src": "4114:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 135, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4114:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 138, "indexed": false, "mutability": "mutable", "name": "minInitialOperatorCount", "nameLocation": "4159:23:0", "nodeType": "VariableDeclaration", "scope": 146, "src": "4151:31:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 137, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4151:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 140, "indexed": false, "mutability": "mutable", "name": "minRewardDuration", "nameLocation": "4200:17:0", "nodeType": "VariableDeclaration", "scope": 146, "src": "4192:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 139, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4192:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 142, "indexed": false, "mutability": "mutable", "name": "delegationRateDenominator", "nameLocation": "4235:25:0", "nodeType": "VariableDeclaration", "scope": 146, "src": "4227:33:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 141, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4227:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 144, "indexed": false, "mutability": "mutable", "name": "unstakeFreezingDuration", "nameLocation": "4278:23:0", "nodeType": "VariableDeclaration", "scope": 146, "src": "4270:31:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 143, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4270:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "3950:357:0" } }, { "id": 274, "nodeType": "FunctionDefinition", "src": "4314:1536:0", "nodes": [], "body": { "id": 273, "nodeType": "Block", "src": "4363:1487:0", "nodes": [], "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "expression": { "id": 154, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "4385:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 155, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4392:4:0", "memberName": "arpa", "nodeType": "MemberAccess", "referencedDeclaration": 62, "src": "4385:11:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } ], "id": 153, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4377:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 152, "name": "address", "nodeType": "ElementaryTypeName", "src": "4377:7:0", "typeDescriptions": {} } }, "id": 156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4377:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 159, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4409: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" } ], "id": 158, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4401:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 157, "name": "address", "nodeType": "ElementaryTypeName", "src": "4401:7:0", "typeDescriptions": {} } }, "id": 160, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4401:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4377:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 165, "nodeType": "IfStatement", "src": "4373:67:0", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 162, "name": "InvalidZeroAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2752, "src": "4420:18:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4420:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 164, "nodeType": "RevertStatement", "src": "4413:27:0" } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 166, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "4454:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 167, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4461:25:0", "memberName": "delegationRateDenominator", "nodeType": "MemberAccess", "referencedDeclaration": 83, "src": "4454:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 168, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4490:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4454:37:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 173, "nodeType": "IfStatement", "src": "4450:73:0", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 170, "name": "InvalidDelegationRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2938, "src": "4500:21:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 171, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4500:23:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 172, "nodeType": "RevertStatement", "src": "4493:30:0" } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 178, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 174, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "4537:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 175, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4547:16:0", "memberName": "REWARD_PRECISION", "nodeType": "MemberAccess", "referencedDeclaration": 3057, "src": "4537:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": { "expression": { "id": 176, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "4566:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 177, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4573:25:0", "memberName": "delegationRateDenominator", "nodeType": "MemberAccess", "referencedDeclaration": 83, "src": "4566:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4537:61:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 179, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4601:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4537:65:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 185, "nodeType": "IfStatement", "src": "4533:126:0", "trueBody": { "id": 184, "nodeType": "Block", "src": "4604:55:0", "statements": [ { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 181, "name": "InvalidDelegationRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2938, "src": "4625:21:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 182, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4625:23:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 183, "nodeType": "RevertStatement", "src": "4618:30:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 186, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "4672:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 187, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4679:19:0", "memberName": "operatorStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 74, "src": "4672:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 188, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4702:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4672:31:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 194, "nodeType": "IfStatement", "src": "4668:97:0", "trueBody": { "id": 193, "nodeType": "Block", "src": "4705:60:0", "statements": [ { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 190, "name": "InvalidOperatorStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2941, "src": "4726:26:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 191, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4726:28:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 192, "nodeType": "RevertStatement", "src": "4719:35:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 195, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "4778:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 196, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4785:23:0", "memberName": "minCommunityStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 71, "src": "4778:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "expression": { "id": 197, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "4811:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 198, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4818:30:0", "memberName": "initialMaxCommunityStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 68, "src": "4811:37:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4778:70:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 204, "nodeType": "IfStatement", "src": "4774:140:0", "trueBody": { "id": 203, "nodeType": "Block", "src": "4850:64:0", "statements": [ { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 200, "name": "InvalidMinCommunityStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2944, "src": "4871:30:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4871:32:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 202, "nodeType": "RevertStatement", "src": "4864:39:0" } ] } }, { "expression": { "arguments": [ { "expression": { "id": 208, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "4941:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 209, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4948:18:0", "memberName": "initialMaxPoolSize", "nodeType": "MemberAccess", "referencedDeclaration": 65, "src": "4941:25:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 210, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "4968:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 211, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4975:30:0", "memberName": "initialMaxCommunityStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 68, "src": "4968:37:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 205, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "4924:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 207, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4930:10:0", "memberName": "_setConfig", "nodeType": "MemberAccess", "referencedDeclaration": 3929, "src": "4924:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Pool_$3853_storage_ptr_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_struct$_Pool_$3853_storage_ptr_$", "typeString": "function (struct StakingPoolLib.Pool storage pointer,uint256,uint256)" } }, "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4924:82:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 213, "nodeType": "ExpressionStatement", "src": "4924:82:0" }, { "expression": { "id": 217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 214, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "5016:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 215, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5024:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 216, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5031:4:0", "memberName": "arpa", "nodeType": "MemberAccess", "referencedDeclaration": 62, "src": "5024:11:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "src": "5016:19:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 218, "nodeType": "ExpressionStatement", "src": "5016:19:0" }, { "expression": { "id": 222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 219, "name": "_operatorStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "5045:20:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 220, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5068:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 221, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5075:19:0", "memberName": "operatorStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 74, "src": "5068:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5045:49:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 223, "nodeType": "ExpressionStatement", "src": "5045:49:0" }, { "expression": { "id": 227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 224, "name": "_minCommunityStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, "src": "5104:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 225, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5131:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 226, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5138:23:0", "memberName": "minCommunityStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 71, "src": "5131:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5104:57:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 228, "nodeType": "ExpressionStatement", "src": "5104:57:0" }, { "expression": { "id": 232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 229, "name": "_minInitialOperatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, "src": "5171:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 230, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5198:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 231, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5205:23:0", "memberName": "minInitialOperatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 77, "src": "5198:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5171:57:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 233, "nodeType": "ExpressionStatement", "src": "5171:57:0" }, { "expression": { "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 234, "name": "_minRewardDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "5238:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 235, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5259:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 236, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5266:17:0", "memberName": "minRewardDuration", "nodeType": "MemberAccess", "referencedDeclaration": 80, "src": "5259:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5238:45:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 238, "nodeType": "ExpressionStatement", "src": "5238:45:0" }, { "expression": { "id": 242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 239, "name": "_delegationRateDenominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "5293:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 240, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5322:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 241, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5329:25:0", "memberName": "delegationRateDenominator", "nodeType": "MemberAccess", "referencedDeclaration": 83, "src": "5322:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5293:61:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 243, "nodeType": "ExpressionStatement", "src": "5293:61:0" }, { "expression": { "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 244, "name": "_unstakeFreezingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 126, "src": "5364:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 245, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5391:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 246, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5398:23:0", "memberName": "unstakeFreezingDuration", "nodeType": "MemberAccess", "referencedDeclaration": 86, "src": "5391:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5364:57:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 248, "nodeType": "ExpressionStatement", "src": "5364:57:0" }, { "eventCall": { "arguments": [ { "arguments": [ { "expression": { "id": 252, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5475:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5482:4:0", "memberName": "arpa", "nodeType": "MemberAccess", "referencedDeclaration": 62, "src": "5475:11:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } ], "id": 251, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5467:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 250, "name": "address", "nodeType": "ElementaryTypeName", "src": "5467:7:0", "typeDescriptions": {} } }, "id": 254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5467:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "expression": { "id": 255, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5501:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 256, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5508:18:0", "memberName": "initialMaxPoolSize", "nodeType": "MemberAccess", "referencedDeclaration": 65, "src": "5501:25:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 257, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5540:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 258, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5547:30:0", "memberName": "initialMaxCommunityStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 68, "src": "5540:37:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 259, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5591:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 260, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5598:23:0", "memberName": "minCommunityStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 71, "src": "5591:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 261, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5635:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 262, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5642:19:0", "memberName": "operatorStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 74, "src": "5635:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 263, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5675:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 264, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5682:23:0", "memberName": "minInitialOperatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 77, "src": "5675:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 265, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5719:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 266, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5726:17:0", "memberName": "minRewardDuration", "nodeType": "MemberAccess", "referencedDeclaration": 80, "src": "5719:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 267, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5757:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 268, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5764:25:0", "memberName": "delegationRateDenominator", "nodeType": "MemberAccess", "referencedDeclaration": 83, "src": "5757:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 269, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "5803:6:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams memory" } }, "id": 270, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5810:23:0", "memberName": "unstakeFreezingDuration", "nodeType": "MemberAccess", "referencedDeclaration": 86, "src": "5803:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 249, "name": "StakingConfigSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, "src": "5437:16:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" } }, "id": 271, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5437:406:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 272, "nodeType": "EmitStatement", "src": "5432:411:0" } ] }, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 150, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 149, "mutability": "mutable", "name": "params", "nameLocation": "4355:6:0", "nodeType": "VariableDeclaration", "scope": 274, "src": "4326:35:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_memory_ptr", "typeString": "struct Staking.PoolConstructorParams" }, "typeName": { "id": 148, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 147, "name": "PoolConstructorParams", "nameLocations": [ "4326:21:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 87, "src": "4326:21:0" }, "referencedDeclaration": 87, "src": "4326:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolConstructorParams_$87_storage_ptr", "typeString": "struct Staking.PoolConstructorParams" } }, "visibility": "internal" } ], "src": "4325:37:0" }, "returnParameters": { "id": 151, "nodeType": "ParameterList", "parameters": [], "src": "4363:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 284, "nodeType": "FunctionDefinition", "src": "5994:112:0", "nodes": [], "body": { "id": 283, "nodeType": "Block", "src": "6067:39:0", "nodes": [], "statements": [ { "expression": { "hexValue": "5374616b696e6720302e312e30", "id": 281, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6084:15:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5f3ee0c1dfd6660b13279eaebf41c9ad2256accae044df2d53dbbf98fc01280b", "typeString": "literal_string \"Staking 0.1.0\"" }, "value": "Staking 0.1.0" }, "functionReturnParameters": 280, "id": 282, "nodeType": "Return", "src": "6077:22:0" } ] }, "baseFunctions": [ 3008 ], "documentation": { "id": 275, "nodeType": "StructuredDocumentation", "src": "5950:39:0", "text": "@inheritdoc TypeAndVersionInterface" }, "functionSelector": "181f5a77", "implemented": true, "kind": "function", "modifiers": [], "name": "typeAndVersion", "nameLocation": "6003:14:0", "overrides": { "id": 277, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6034:8:0" }, "parameters": { "id": 276, "nodeType": "ParameterList", "parameters": [], "src": "6017:2:0" }, "returnParameters": { "id": 280, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 279, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 284, "src": "6052:13:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 278, "name": "string", "nodeType": "ElementaryTypeName", "src": "6052:6:0", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "6051:15:0" }, "scope": 2582, "stateMutability": "pure", "virtual": false, "visibility": "external" }, { "id": 313, "nodeType": "FunctionDefinition", "src": "6210:235:0", "nodes": [], "body": { "id": 312, "nodeType": "Block", "src": "6296:149:0", "nodes": [], "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 294, "name": "controller", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "6310:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6332: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" } ], "id": 296, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6324:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 295, "name": "address", "nodeType": "ElementaryTypeName", "src": "6324:7:0", "typeDescriptions": {} } }, "id": 298, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6324:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6310:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 303, "nodeType": "IfStatement", "src": "6306:57:0", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 300, "name": "InvalidZeroAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2752, "src": "6343:18:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 301, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6343:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 302, "nodeType": "RevertStatement", "src": "6336:27:0" } }, { "expression": { "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 304, "name": "_controller", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 99, "src": "6373:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 305, "name": "controller", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "6387:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6373:24:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 307, "nodeType": "ExpressionStatement", "src": "6373:24:0" }, { "eventCall": { "arguments": [ { "id": 309, "name": "controller", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "6427:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 308, "name": "ControllerSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2712, "src": "6413:13:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 310, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6413:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 311, "nodeType": "EmitStatement", "src": "6408:30:0" } ] }, "baseFunctions": [ 2984 ], "documentation": { "id": 285, "nodeType": "StructuredDocumentation", "src": "6176:29:0", "text": "@inheritdoc IStakingOwner" }, "functionSelector": "92eefe9b", "implemented": true, "kind": "function", "modifiers": [ { "id": 292, "kind": "modifierInvocation", "modifierName": { "id": 291, "name": "onlyOwner", "nameLocations": [ "6286:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32110, "src": "6286:9:0" }, "nodeType": "ModifierInvocation", "src": "6286:9:0" } ], "name": "setController", "nameLocation": "6219:13:0", "overrides": { "id": 290, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 289, "name": "IStakingOwner", "nameLocations": [ "6271:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3001, "src": "6271:13:0" } ], "src": "6262:23:0" }, "parameters": { "id": 288, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 287, "mutability": "mutable", "name": "controller", "nameLocation": "6241:10:0", "nodeType": "VariableDeclaration", "scope": 313, "src": "6233:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 286, "name": "address", "nodeType": "ElementaryTypeName", "src": "6233:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "6232:20:0" }, "returnParameters": { "id": 293, "nodeType": "ParameterList", "parameters": [], "src": "6296:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 335, "nodeType": "FunctionDefinition", "src": "6485:238:0", "nodes": [], "body": { "id": 334, "nodeType": "Block", "src": "6652:71:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "id": 330, "name": "maxPoolSize", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 316, "src": "6679:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 331, "name": "maxCommunityStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 318, "src": "6692:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 327, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "6662:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 329, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6668:10:0", "memberName": "_setConfig", "nodeType": "MemberAccess", "referencedDeclaration": 3929, "src": "6662:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Pool_$3853_storage_ptr_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_struct$_Pool_$3853_storage_ptr_$", "typeString": "function (struct StakingPoolLib.Pool storage pointer,uint256,uint256)" } }, "id": 332, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6662:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 333, "nodeType": "ExpressionStatement", "src": "6662:54:0" } ] }, "baseFunctions": [ 2978 ], "documentation": { "id": 314, "nodeType": "StructuredDocumentation", "src": "6451:29:0", "text": "@inheritdoc IStakingOwner" }, "functionSelector": "4aba2ca9", "implemented": true, "kind": "function", "modifiers": [ { "id": 323, "kind": "modifierInvocation", "modifierName": { "id": 322, "name": "onlyOwner", "nameLocations": [ "6619:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32110, "src": "6619:9:0" }, "nodeType": "ModifierInvocation", "src": "6619:9:0" }, { "id": 325, "kind": "modifierInvocation", "modifierName": { "id": 324, "name": "whenActive", "nameLocations": [ "6637:10:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2553, "src": "6637:10:0" }, "nodeType": "ModifierInvocation", "src": "6637:10:0" } ], "name": "setPoolConfig", "nameLocation": "6494:13:0", "overrides": { "id": 321, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 320, "name": "IStakingOwner", "nameLocations": [ "6596:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3001, "src": "6596:13:0" } ], "src": "6587:23:0" }, "parameters": { "id": 319, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 316, "mutability": "mutable", "name": "maxPoolSize", "nameLocation": "6516:11:0", "nodeType": "VariableDeclaration", "scope": 335, "src": "6508:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 315, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6508:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 318, "mutability": "mutable", "name": "maxCommunityStakeAmount", "nameLocation": "6537:23:0", "nodeType": "VariableDeclaration", "scope": 335, "src": "6529:31:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 317, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6529:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "6507:54:0" }, "returnParameters": { "id": 326, "nodeType": "ParameterList", "parameters": [], "src": "6652:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 382, "nodeType": "FunctionDefinition", "src": "6763:498:0", "nodes": [], "body": { "id": 381, "nodeType": "Block", "src": "6861:400:0", "nodes": [], "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 347, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "6875:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6883:14:0", "memberName": "startTimestamp", "nodeType": "MemberAccess", "referencedDeclaration": 3093, "src": "6875:22:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "hexValue": "30", "id": 349, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6901:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "6875:27:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 354, "nodeType": "IfStatement", "src": "6871:60:0", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 351, "name": "AlreadyInitialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2947, "src": "6911:18:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 352, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6911:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 353, "nodeType": "RevertStatement", "src": "6904:27:0" } }, { "expression": { "arguments": [ { "id": 358, "name": "_minInitialOperatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, "src": "6954:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 355, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "6942:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 357, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6948:5:0", "memberName": "_open", "nodeType": "MemberAccess", "referencedDeclaration": 3967, "src": "6942:11:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Pool_$3853_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_Pool_$3853_storage_ptr_$", "typeString": "function (struct StakingPoolLib.Pool storage pointer,uint256)" } }, "id": 359, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6942:37:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 360, "nodeType": "ExpressionStatement", "src": "6942:37:0" }, { "expression": { "arguments": [ { "expression": { "id": 364, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7146:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 365, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7150:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "7146:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "id": 368, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "7166:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } ], "id": 367, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7158:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 366, "name": "address", "nodeType": "ElementaryTypeName", "src": "7158:7:0", "typeDescriptions": {} } }, "id": 369, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7158:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 370, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "7173:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 361, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "7123:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7129:16:0", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 33513, "src": "7123:22:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$33394_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$33394_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7123:57:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 372, "nodeType": "ExpressionStatement", "src": "7123:57:0" }, { "expression": { "arguments": [ { "id": 376, "name": "_minRewardDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "7211:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 377, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "7231:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 378, "name": "rewardDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 340, "src": "7239:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 373, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "7191:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 375, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7199:11:0", "memberName": "_initialize", "nodeType": "MemberAccess", "referencedDeclaration": 3152, "src": "7191:19:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256,uint256)" } }, "id": 379, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7191:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 380, "nodeType": "ExpressionStatement", "src": "7191:63:0" } ] }, "baseFunctions": [ 2992 ], "documentation": { "id": 336, "nodeType": "StructuredDocumentation", "src": "6729:29:0", "text": "@inheritdoc IStakingOwner" }, "functionSelector": "8fb4b573", "implemented": true, "kind": "function", "modifiers": [ { "id": 345, "kind": "modifierInvocation", "modifierName": { "id": 344, "name": "onlyOwner", "nameLocations": [ "6851:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32110, "src": "6851:9:0" }, "nodeType": "ModifierInvocation", "src": "6851:9:0" } ], "name": "start", "nameLocation": "6772:5:0", "overrides": { "id": 343, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 342, "name": "IStakingOwner", "nameLocations": [ "6836:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3001, "src": "6836:13:0" } ], "src": "6827:23:0" }, "parameters": { "id": 341, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 338, "mutability": "mutable", "name": "amount", "nameLocation": "6786:6:0", "nodeType": "VariableDeclaration", "scope": 382, "src": "6778:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 337, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6778:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 340, "mutability": "mutable", "name": "rewardDuration", "nameLocation": "6802:14:0", "nodeType": "VariableDeclaration", "scope": 382, "src": "6794:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 339, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6794:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "6777:40:0" }, "returnParameters": { "id": 346, "nodeType": "ParameterList", "parameters": [], "src": "6861:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 433, "nodeType": "FunctionDefinition", "src": "7301:479:0", "nodes": [], "body": { "id": 432, "nodeType": "Block", "src": "7452:328:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 399, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "7493:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7493:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 396, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "7462:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 398, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7470:22:0", "memberName": "_accumulateBaseRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3203, "src": "7462:30:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256)" } }, "id": 401, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7462:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 402, "nodeType": "ExpressionStatement", "src": "7462:63:0" }, { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 406, "name": "getTotalDelegatedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1644, "src": "7572:23:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 407, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7572:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 408, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "7599:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 409, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7599:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 403, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "7535:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 405, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7543:28:0", "memberName": "_accumulateDelegationRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3241, "src": "7535:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256)" } }, "id": 410, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7535:96:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 411, "nodeType": "ExpressionStatement", "src": "7535:96:0" }, { "expression": { "arguments": [ { "expression": { "id": 415, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7665:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7669:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "7665:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "id": 419, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "7685:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } ], "id": 418, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7677:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 417, "name": "address", "nodeType": "ElementaryTypeName", "src": "7677:7:0", "typeDescriptions": {} } }, "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7677:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 421, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7692:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 412, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "7642:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7648:16:0", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 33513, "src": "7642:22:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$33394_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$33394_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7642:57:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 423, "nodeType": "ExpressionStatement", "src": "7642:57:0" }, { "expression": { "arguments": [ { "id": 427, "name": "_minRewardDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "7730:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 428, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7750:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 429, "name": "rewardDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 387, "src": "7758:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 424, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "7710:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 426, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7718:11:0", "memberName": "_initialize", "nodeType": "MemberAccess", "referencedDeclaration": 3152, "src": "7710:19:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256,uint256)" } }, "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7710:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 431, "nodeType": "ExpressionStatement", "src": "7710:63:0" } ] }, "baseFunctions": [ 2962 ], "documentation": { "id": 383, "nodeType": "StructuredDocumentation", "src": "7267:29:0", "text": "@inheritdoc IStakingOwner" }, "functionSelector": "cfcd8fd8", "implemented": true, "kind": "function", "modifiers": [ { "id": 392, "kind": "modifierInvocation", "modifierName": { "id": 391, "name": "onlyOwner", "nameLocations": [ "7417:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32110, "src": "7417:9:0" }, "nodeType": "ModifierInvocation", "src": "7417:9:0" }, { "id": 394, "kind": "modifierInvocation", "modifierName": { "id": 393, "name": "whenInactive", "nameLocations": [ "7435:12:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2568, "src": "7435:12:0" }, "nodeType": "ModifierInvocation", "src": "7435:12:0" } ], "name": "newReward", "nameLocation": "7310:9:0", "overrides": { "id": 390, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 389, "name": "IStakingOwner", "nameLocations": [ "7394:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3001, "src": "7394:13:0" } ], "src": "7385:23:0" }, "parameters": { "id": 388, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 385, "mutability": "mutable", "name": "amount", "nameLocation": "7328:6:0", "nodeType": "VariableDeclaration", "scope": 433, "src": "7320:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 384, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7320:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 387, "mutability": "mutable", "name": "rewardDuration", "nameLocation": "7344:14:0", "nodeType": "VariableDeclaration", "scope": 433, "src": "7336:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 386, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7336:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "7319:40:0" }, "returnParameters": { "id": 395, "nodeType": "ParameterList", "parameters": [], "src": "7452:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 494, "nodeType": "FunctionDefinition", "src": "7820:522:0", "nodes": [], "body": { "id": 493, "nodeType": "Block", "src": "7933:409:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 450, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "7974:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 451, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7974:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 447, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "7943:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 449, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7951:22:0", "memberName": "_accumulateBaseRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3203, "src": "7943:30:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256)" } }, "id": 452, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7943:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 453, "nodeType": "ExpressionStatement", "src": "7943:63:0" }, { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 457, "name": "getTotalDelegatedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1644, "src": "8053:23:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 458, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8053:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 459, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "8080:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 460, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8080:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 454, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "8016:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 456, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8024:28:0", "memberName": "_accumulateDelegationRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3241, "src": "8016:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256)" } }, "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8016:96:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 462, "nodeType": "ExpressionStatement", "src": "8016:96:0" }, { "expression": { "arguments": [ { "expression": { "id": 466, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8146:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 467, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8150:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "8146:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "id": 470, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8166:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } ], "id": 469, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8158:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 468, "name": "address", "nodeType": "ElementaryTypeName", "src": "8158:7:0", "typeDescriptions": {} } }, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8158:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 472, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 436, "src": "8173:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 463, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "8123:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8129:16:0", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 33513, "src": "8123:22:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$33394_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$33394_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 473, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8123:57:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 474, "nodeType": "ExpressionStatement", "src": "8123:57:0" }, { "expression": { "arguments": [ { "id": 478, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 436, "src": "8213:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 479, "name": "rewardDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 438, "src": "8221:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 480, "name": "_minRewardDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "8237:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 475, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "8191:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 477, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8199:13:0", "memberName": "_updateReward", "nodeType": "MemberAccess", "referencedDeclaration": 3532, "src": "8191:21:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256,uint256)" } }, "id": 481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8191:65:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 482, "nodeType": "ExpressionStatement", "src": "8191:65:0" }, { "eventCall": { "arguments": [ { "id": 486, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 436, "src": "8294:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 487, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "8302:5:0", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8308:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "8302:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 489, "name": "rewardDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 438, "src": "8320:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8302:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 483, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "8272:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 485, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8282:11:0", "memberName": "RewardAdded", "nodeType": "MemberAccess", "referencedDeclaration": 3036, "src": "8272:21:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)" } }, "id": 491, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8272:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 492, "nodeType": "EmitStatement", "src": "8267:68:0" } ] }, "baseFunctions": [ 2970 ], "documentation": { "id": 434, "nodeType": "StructuredDocumentation", "src": "7786:29:0", "text": "@inheritdoc IStakingOwner" }, "functionSelector": "75c93bb9", "implemented": true, "kind": "function", "modifiers": [ { "id": 443, "kind": "modifierInvocation", "modifierName": { "id": 442, "name": "onlyOwner", "nameLocations": [ "7912:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32110, "src": "7912:9:0" }, "nodeType": "ModifierInvocation", "src": "7912:9:0" }, { "id": 445, "kind": "modifierInvocation", "modifierName": { "id": 444, "name": "whenActive", "nameLocations": [ "7922:10:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2553, "src": "7922:10:0" }, "nodeType": "ModifierInvocation", "src": "7922:10:0" } ], "name": "addReward", "nameLocation": "7829:9:0", "overrides": { "id": 441, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 440, "name": "IStakingOwner", "nameLocations": [ "7897:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3001, "src": "7897:13:0" } ], "src": "7888:23:0" }, "parameters": { "id": 439, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 436, "mutability": "mutable", "name": "amount", "nameLocation": "7847:6:0", "nodeType": "VariableDeclaration", "scope": 494, "src": "7839:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 435, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7839:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 438, "mutability": "mutable", "name": "rewardDuration", "nameLocation": "7863:14:0", "nodeType": "VariableDeclaration", "scope": 494, "src": "7855:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 437, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7855:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "7838:40:0" }, "returnParameters": { "id": 446, "nodeType": "ParameterList", "parameters": [], "src": "7933:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 529, "nodeType": "FunctionDefinition", "src": "8584:428:0", "nodes": [], "body": { "id": 528, "nodeType": "Block", "src": "8679:333:0", "nodes": [], "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 508, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 505, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "8845:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 506, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8853:14:0", "memberName": "startTimestamp", "nodeType": "MemberAccess", "referencedDeclaration": 3093, "src": "8845:22:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 507, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8870:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "8845:26:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "id": 511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "8875:11:0", "subExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 509, "name": "isActive", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1412, "src": "8876:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, "id": 510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8876:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "8845:41:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 521, "nodeType": "IfStatement", "src": "8841:124:0", "trueBody": { "id": 520, "nodeType": "Block", "src": "8888:77:0", "statements": [ { "errorCall": { "arguments": [ { "hexValue": "66616c7365", "id": 516, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8942:5:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "hexValue": "74727565", "id": 517, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8949:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "expression": { "id": 513, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "8909:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8924:17:0", "memberName": "InvalidPoolStatus", "nodeType": "MemberAccess", "referencedDeclaration": 3734, "src": "8909:32:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_bool_$_t_bool_$returns$__$", "typeString": "function (bool,bool) pure" } }, "id": 518, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8909:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 519, "nodeType": "RevertStatement", "src": "8902:52:0" } ] } }, { "expression": { "arguments": [ { "id": 525, "name": "operators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 498, "src": "8995:9:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" } ], "expression": { "id": 522, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "8975:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 524, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8981:13:0", "memberName": "_addOperators", "nodeType": "MemberAccess", "referencedDeclaration": 4133, "src": "8975:19:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Pool_$3853_storage_ptr_$_t_array$_t_address_$dyn_calldata_ptr_$returns$__$attached_to$_t_struct$_Pool_$3853_storage_ptr_$", "typeString": "function (struct StakingPoolLib.Pool storage pointer,address[] calldata)" } }, "id": 526, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8975:30:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 527, "nodeType": "ExpressionStatement", "src": "8975:30:0" } ] }, "baseFunctions": [ 2954 ], "documentation": { "id": 495, "nodeType": "StructuredDocumentation", "src": "8348:231:0", "text": "@dev Required conditions for adding operators:\n - Operators can only be added to the pool if they have no prior stake.\n - Operators cannot be added to the pool after staking ends.\n @inheritdoc IStakingOwner" }, "functionSelector": "a07aea1c", "implemented": true, "kind": "function", "modifiers": [ { "id": 503, "kind": "modifierInvocation", "modifierName": { "id": 502, "name": "onlyOwner", "nameLocations": [ "8669:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32110, "src": "8669:9:0" }, "nodeType": "ModifierInvocation", "src": "8669:9:0" } ], "name": "addOperators", "nameLocation": "8593:12:0", "overrides": { "id": 501, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 500, "name": "IStakingOwner", "nameLocations": [ "8654:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3001, "src": "8654:13:0" } ], "src": "8645:23:0" }, "parameters": { "id": 499, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 498, "mutability": "mutable", "name": "operators", "nameLocation": "8625:9:0", "nodeType": "VariableDeclaration", "scope": 529, "src": "8606:28:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 496, "name": "address", "nodeType": "ElementaryTypeName", "src": "8606:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 497, "nodeType": "ArrayTypeName", "src": "8606:9:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "visibility": "internal" } ], "src": "8605:30:0" }, "returnParameters": { "id": 504, "nodeType": "ParameterList", "parameters": [], "src": "8679:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 541, "nodeType": "FunctionDefinition", "src": "9052:94:0", "nodes": [], "body": { "id": 540, "nodeType": "Block", "src": "9121:25:0", "nodes": [], "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 537, "name": "_pause", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 32712, "src": "9131:6:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9131:8:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 539, "nodeType": "ExpressionStatement", "src": "9131:8:0" } ] }, "baseFunctions": [ 2996 ], "documentation": { "id": 530, "nodeType": "StructuredDocumentation", "src": "9018:29:0", "text": "@inheritdoc IStakingOwner" }, "functionSelector": "51858e27", "implemented": true, "kind": "function", "modifiers": [ { "id": 535, "kind": "modifierInvocation", "modifierName": { "id": 534, "name": "onlyOwner", "nameLocations": [ "9111:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32110, "src": "9111:9:0" }, "nodeType": "ModifierInvocation", "src": "9111:9:0" } ], "name": "emergencyPause", "nameLocation": "9061:14:0", "overrides": { "id": 533, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 532, "name": "IStakingOwner", "nameLocations": [ "9096:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3001, "src": "9096:13:0" } ], "src": "9087:23:0" }, "parameters": { "id": 531, "nodeType": "ParameterList", "parameters": [], "src": "9075:2:0" }, "returnParameters": { "id": 536, "nodeType": "ParameterList", "parameters": [], "src": "9121:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 553, "nodeType": "FunctionDefinition", "src": "9186:98:0", "nodes": [], "body": { "id": 552, "nodeType": "Block", "src": "9257:27:0", "nodes": [], "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 549, "name": "_unpause", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 32728, "src": "9267:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 550, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9267:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 551, "nodeType": "ExpressionStatement", "src": "9267:10:0" } ] }, "baseFunctions": [ 3000 ], "documentation": { "id": 542, "nodeType": "StructuredDocumentation", "src": "9152:29:0", "text": "@inheritdoc IStakingOwner" }, "functionSelector": "4a4e3bd5", "implemented": true, "kind": "function", "modifiers": [ { "id": 547, "kind": "modifierInvocation", "modifierName": { "id": 546, "name": "onlyOwner", "nameLocations": [ "9247:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32110, "src": "9247:9:0" }, "nodeType": "ModifierInvocation", "src": "9247:9:0" } ], "name": "emergencyUnpause", "nameLocation": "9195:16:0", "overrides": { "id": 545, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 544, "name": "IStakingOwner", "nameLocations": [ "9232:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3001, "src": "9232:13:0" } ], "src": "9223:23:0" }, "parameters": { "id": 543, "nodeType": "ParameterList", "parameters": [], "src": "9211:2:0" }, "returnParameters": { "id": 548, "nodeType": "ParameterList", "parameters": [], "src": "9257:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 564, "nodeType": "FunctionDefinition", "src": "9380:124:0", "nodes": [], "body": { "id": 563, "nodeType": "Block", "src": "9464:40:0", "nodes": [], "statements": [ { "expression": { "id": 561, "name": "_migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "9481:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 560, "id": 562, "nodeType": "Return", "src": "9474:23:0" } ] }, "baseFunctions": [ 2616 ], "documentation": { "id": 554, "nodeType": "StructuredDocumentation", "src": "9348:27:0", "text": "@inheritdoc IMigratable" }, "functionSelector": "1ddb5552", "implemented": true, "kind": "function", "modifiers": [], "name": "getMigrationTarget", "nameLocation": "9389:18:0", "overrides": { "id": 557, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 556, "name": "IMigratable", "nameLocations": [ "9433:11:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2633, "src": "9433:11:0" } ], "src": "9424:21:0" }, "parameters": { "id": 555, "nodeType": "ParameterList", "parameters": [], "src": "9407:2:0" }, "returnParameters": { "id": 560, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 559, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 564, "src": "9455:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 558, "name": "address", "nodeType": "ElementaryTypeName", "src": "9455:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "9454:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 630, "nodeType": "FunctionDefinition", "src": "9542:671:0", "nodes": [], "body": { "id": 629, "nodeType": "Block", "src": "9640:573:0", "nodes": [], "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "expression": { "id": 574, "name": "migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 567, "src": "9667:15:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9683:4:0", "memberName": "code", "nodeType": "MemberAccess", "src": "9667:20:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9688:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "9667:27:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 577, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9698:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "9667:32:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 579, "name": "migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 567, "src": "9703:15:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [ { "id": 582, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "9730:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } ], "id": 581, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9722:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 580, "name": "address", "nodeType": "ElementaryTypeName", "src": "9722:7:0", "typeDescriptions": {} } }, "id": 583, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9722:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9703:32:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "9667:68:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 586, "name": "_proposedMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "9755:24:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 587, "name": "migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 567, "src": "9783:15:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9755:43:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "9667:131:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 590, "name": "_migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "9802:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 591, "name": "migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 567, "src": "9822:15:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9802:35:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "9667:170:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "id": 602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "9857:82:0", "subExpression": { "arguments": [ { "expression": { "expression": { "id": 598, "name": "IMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "9901:16:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IMigrationTarget_$2644_$", "typeString": "type(contract IMigrationTarget)" } }, "id": 599, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "9918:11:0", "memberName": "migrateFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "9901:28:0", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", "typeString": "function IMigrationTarget.migrateFrom(uint256,bytes calldata)" } }, "id": 600, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "9930:8:0", "memberName": "selector", "nodeType": "MemberAccess", "src": "9901:37:0", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } ], "expression": { "arguments": [ { "id": 595, "name": "migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 567, "src": "9866:15:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 594, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 34389, "src": "9858:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC165_$34389_$", "typeString": "type(contract IERC165)" } }, "id": 596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9858:24:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC165_$34389", "typeString": "contract IERC165" } }, "id": 597, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9883:17:0", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 34388, "src": "9858:42:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view external returns (bool)" } }, "id": 601, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9858:81:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "9667:272:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 608, "nodeType": "IfStatement", "src": "9650:356:0", "trueBody": { "id": 607, "nodeType": "Block", "src": "9950:56:0", "statements": [ { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 604, "name": "InvalidMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2610, "src": "9971:22:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 605, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9971:24:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 606, "nodeType": "RevertStatement", "src": "9964:31:0" } ] } }, { "expression": { "id": 614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 609, "name": "_migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "10016:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "hexValue": "30", "id": 612, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10043: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" } ], "id": 611, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10035:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 610, "name": "address", "nodeType": "ElementaryTypeName", "src": "10035:7:0", "typeDescriptions": {} } }, "id": 613, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10035:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10016:29:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 615, "nodeType": "ExpressionStatement", "src": "10016:29:0" }, { "expression": { "id": 618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 616, "name": "_proposedMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "10055:24:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 617, "name": "migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 567, "src": "10082:15:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10055:42:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 619, "nodeType": "ExpressionStatement", "src": "10055:42:0" }, { "expression": { "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 620, "name": "_proposedMigrationTargetAt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 105, "src": "10107:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 621, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "10136:5:0", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 622, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10142:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "10136:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "10107:44:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 624, "nodeType": "ExpressionStatement", "src": "10107:44:0" }, { "eventCall": { "arguments": [ { "id": 626, "name": "migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 567, "src": "10190:15:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 625, "name": "MigrationTargetProposed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2589, "src": "10166:23:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 627, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10166:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 628, "nodeType": "EmitStatement", "src": "10161:45:0" } ] }, "baseFunctions": [ 2622 ], "documentation": { "id": 565, "nodeType": "StructuredDocumentation", "src": "9510:27:0", "text": "@inheritdoc IMigratable" }, "functionSelector": "63b2c85a", "implemented": true, "kind": "function", "modifiers": [ { "id": 572, "kind": "modifierInvocation", "modifierName": { "id": 571, "name": "onlyOwner", "nameLocations": [ "9630:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32110, "src": "9630:9:0" }, "nodeType": "ModifierInvocation", "src": "9630:9:0" } ], "name": "proposeMigrationTarget", "nameLocation": "9551:22:0", "overrides": { "id": 570, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 569, "name": "IMigratable", "nameLocations": [ "9617:11:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2633, "src": "9617:11:0" } ], "src": "9608:21:0" }, "parameters": { "id": 568, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 567, "mutability": "mutable", "name": "migrationTarget", "nameLocation": "9582:15:0", "nodeType": "VariableDeclaration", "scope": 630, "src": "9574:23:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 566, "name": "address", "nodeType": "ElementaryTypeName", "src": "9574:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "9573:25:0" }, "returnParameters": { "id": 573, "nodeType": "ParameterList", "parameters": [], "src": "9640:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 680, "nodeType": "FunctionDefinition", "src": "10251:476:0", "nodes": [], "body": { "id": 679, "nodeType": "Block", "src": "10325:402:0", "nodes": [], "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 638, "name": "_proposedMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "10339:24:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 641, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10375: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" } ], "id": 640, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10367:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 639, "name": "address", "nodeType": "ElementaryTypeName", "src": "10367:7:0", "typeDescriptions": {} } }, "id": 642, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10367:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10339:38:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 648, "nodeType": "IfStatement", "src": "10335:100:0", "trueBody": { "id": 647, "nodeType": "Block", "src": "10379:56:0", "statements": [ { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 644, "name": "InvalidMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2610, "src": "10400:22:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 645, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10400:24:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 646, "nodeType": "RevertStatement", "src": "10393:31:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 649, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "10449:5:0", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10455:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "10449:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "components": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 653, "name": "_proposedMigrationTargetAt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 105, "src": "10476:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 652, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10468:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 651, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10468:7:0", "typeDescriptions": {} } }, "id": 654, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10468:35:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "hexValue": "37", "id": 655, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10506:6:0", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800" }, "value": "7" }, "src": "10468:44:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 657, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10467:46:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "10449:64:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 663, "nodeType": "IfStatement", "src": "10445:119:0", "trueBody": { "id": 662, "nodeType": "Block", "src": "10515:49:0", "statements": [ { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 659, "name": "AccessForbidden", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2749, "src": "10536:15:0", "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": "10536:17:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 661, "nodeType": "RevertStatement", "src": "10529:24:0" } ] } }, { "expression": { "id": 666, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 664, "name": "_migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "10574:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 665, "name": "_proposedMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "10593:24:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10574:43:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 667, "nodeType": "ExpressionStatement", "src": "10574:43:0" }, { "expression": { "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 668, "name": "_proposedMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "10627:24:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "hexValue": "30", "id": 671, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10662: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" } ], "id": 670, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10654:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 669, "name": "address", "nodeType": "ElementaryTypeName", "src": "10654:7:0", "typeDescriptions": {} } }, "id": 672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10654:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10627:37:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 674, "nodeType": "ExpressionStatement", "src": "10627:37:0" }, { "eventCall": { "arguments": [ { "id": 676, "name": "_migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "10703:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 675, "name": "MigrationTargetAccepted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2594, "src": "10679:23:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 677, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10679:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 678, "nodeType": "EmitStatement", "src": "10674:46:0" } ] }, "baseFunctions": [ 2626 ], "documentation": { "id": 631, "nodeType": "StructuredDocumentation", "src": "10219:27:0", "text": "@inheritdoc IMigratable" }, "functionSelector": "e937fdaa", "implemented": true, "kind": "function", "modifiers": [ { "id": 636, "kind": "modifierInvocation", "modifierName": { "id": 635, "name": "onlyOwner", "nameLocations": [ "10315:9:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32110, "src": "10315:9:0" }, "nodeType": "ModifierInvocation", "src": "10315:9:0" } ], "name": "acceptMigrationTarget", "nameLocation": "10260:21:0", "overrides": { "id": 634, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 633, "name": "IMigratable", "nameLocations": [ "10302:11:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2633, "src": "10302:11:0" } ], "src": "10293:21:0" }, "parameters": { "id": 632, "nodeType": "ParameterList", "parameters": [], "src": "10281:2:0" }, "returnParameters": { "id": 637, "nodeType": "ParameterList", "parameters": [], "src": "10325:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 755, "nodeType": "FunctionDefinition", "src": "10765:626:0", "nodes": [], "body": { "id": 754, "nodeType": "Block", "src": "10847:544:0", "nodes": [], "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 690, "name": "_migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "10861:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10889: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" } ], "id": 692, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10881:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 691, "name": "address", "nodeType": "ElementaryTypeName", "src": "10881:7:0", "typeDescriptions": {} } }, "id": 694, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10881:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10861:30:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 699, "nodeType": "IfStatement", "src": "10857:67:0", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 696, "name": "InvalidMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2610, "src": "10900:22:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 697, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10900:24:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 698, "nodeType": "RevertStatement", "src": "10893:31:0" } }, { "assignments": [ 701, 703, 705 ], "declarations": [ { "constant": false, "id": 701, "mutability": "mutable", "name": "amount", "nameLocation": "10944:6:0", "nodeType": "VariableDeclaration", "scope": 754, "src": "10936:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10936:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 703, "mutability": "mutable", "name": "baseReward", "nameLocation": "10960:10:0", "nodeType": "VariableDeclaration", "scope": 754, "src": "10952:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 702, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10952:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 705, "mutability": "mutable", "name": "delegationReward", "nameLocation": "10980:16:0", "nodeType": "VariableDeclaration", "scope": 754, "src": "10972:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 704, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10972:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 710, "initialValue": { "arguments": [ { "expression": { "id": 707, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11006:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 708, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11010:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "11006:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 706, "name": "_exit", "nodeType": "Identifier", "overloadedDeclarations": [ 2230, 2529 ], "referencedDeclaration": 2230, "src": "11000:5:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$", "typeString": "function (address) returns (uint256,uint256,uint256)" } }, "id": 709, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11000:17:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256,uint256)" } }, "nodeType": "VariableDeclarationStatement", "src": "10935:82:0" }, { "expression": { "arguments": [ { "id": 714, "name": "_migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "11047:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 721, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 719, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 717, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "11073:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 718, "name": "baseReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 703, "src": "11082:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11073:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 720, "name": "delegationReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 705, "src": "11095:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11073:38:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 716, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11065:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 715, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11065:7:0", "typeDescriptions": {} } }, "id": 722, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11065:47:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 711, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "11028:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11034:12:0", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 33487, "src": "11028:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$33394_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$33394_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 723, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11028:85:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 724, "nodeType": "ExpressionStatement", "src": "11028:85:0" }, { "expression": { "arguments": [ { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 731, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "11225:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 732, "name": "baseReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 703, "src": "11234:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11225:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 734, "name": "delegationReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 705, "src": "11247:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11225:38:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 730, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11217:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 729, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11217:7:0", "typeDescriptions": {} } }, "id": 736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11217:47:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [ { "expression": { "id": 739, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11277:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11281:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "11277:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 741, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 683, "src": "11289:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } ], "expression": { "id": 737, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "11266:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 738, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "11270:6:0", "memberName": "encode", "nodeType": "MemberAccess", "src": "11266:10:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 742, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11266:28:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "arguments": [ { "id": 726, "name": "_migrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "11174:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 725, "name": "IMigrationTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "11157:16:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IMigrationTarget_$2644_$", "typeString": "type(contract IMigrationTarget)" } }, "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11157:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IMigrationTarget_$2644", "typeString": "contract IMigrationTarget" } }, "id": 728, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11192:11:0", "memberName": "migrateFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "11157:46:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (uint256,bytes memory) external" } }, "id": 743, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11157:147:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 744, "nodeType": "ExpressionStatement", "src": "11157:147:0" }, { "eventCall": { "arguments": [ { "expression": { "id": 746, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11329:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11333:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "11329:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 748, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "11341:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 749, "name": "baseReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 703, "src": "11349:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 750, "name": "delegationReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 705, "src": "11361:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 751, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 683, "src": "11379:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } ], "id": 745, "name": "Migrated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2607, "src": "11320:8:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,uint256,uint256,uint256,bytes memory)" } }, "id": 752, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11320:64:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 753, "nodeType": "EmitStatement", "src": "11315:69:0" } ] }, "baseFunctions": [ 2632 ], "documentation": { "id": 681, "nodeType": "StructuredDocumentation", "src": "10733:27:0", "text": "@inheritdoc IMigratable" }, "functionSelector": "8932a90d", "implemented": true, "kind": "function", "modifiers": [ { "id": 688, "kind": "modifierInvocation", "modifierName": { "id": 687, "name": "whenInactive", "nameLocations": [ "10834:12:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2568, "src": "10834:12:0" }, "nodeType": "ModifierInvocation", "src": "10834:12:0" } ], "name": "migrate", "nameLocation": "10774:7:0", "overrides": { "id": 686, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 685, "name": "IMigratable", "nameLocations": [ "10821:11:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2633, "src": "10821:11:0" } ], "src": "10812:21:0" }, "parameters": { "id": 684, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 683, "mutability": "mutable", "name": "data", "nameLocation": "10797:4:0", "nodeType": "VariableDeclaration", "scope": 755, "src": "10782:19:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 682, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10782:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "10781:21:0" }, "returnParameters": { "id": 689, "nodeType": "ParameterList", "parameters": [], "src": "10847:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 814, "nodeType": "FunctionDefinition", "src": "11483:520:0", "nodes": [], "body": { "id": 813, "nodeType": "Block", "src": "11576:427:0", "nodes": [], "statements": [ { "assignments": [ 771 ], "declarations": [ { "constant": false, "id": 771, "mutability": "mutable", "name": "stakerAccount", "nameLocation": "11616:13:0", "nodeType": "VariableDeclaration", "scope": 813, "src": "11586:43:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" }, "typeName": { "id": 770, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 769, "name": "StakingPoolLib.Staker", "nameLocations": [ "11586:14:0", "11601:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3839, "src": "11586:21:0" }, "referencedDeclaration": 3839, "src": "11586:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" } }, "visibility": "internal" } ], "id": 776, "initialValue": { "baseExpression": { "expression": { "id": 772, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "11632:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 773, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11638:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "11632:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 775, "indexExpression": { "id": 774, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 758, "src": "11646:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11632:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "11586:67:0" }, { "condition": { "id": 779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "11667:25:0", "subExpression": { "expression": { "id": 777, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "11668:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker storage pointer" } }, "id": 778, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11682:10:0", "memberName": "isOperator", "nodeType": "MemberAccess", "referencedDeclaration": 3830, "src": "11668:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 787, "nodeType": "IfStatement", "src": "11663:106:0", "trueBody": { "id": 786, "nodeType": "Block", "src": "11694:75:0", "statements": [ { "errorCall": { "arguments": [ { "id": 783, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 758, "src": "11751:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 780, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "11715:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11730:20:0", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 3774, "src": "11715:35:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 784, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11715:43:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 785, "nodeType": "RevertStatement", "src": "11708:50:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 791, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 788, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "11782:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker storage pointer" } }, "id": 789, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11796:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "11782:26:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 790, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 760, "src": "11811:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11782:35:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 799, "nodeType": "IfStatement", "src": "11778:119:0", "trueBody": { "id": 798, "nodeType": "Block", "src": "11819:78:0", "statements": [ { "errorCall": { "arguments": [ { "id": 795, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 760, "src": "11879:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 792, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "11840:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11855:23:0", "memberName": "InsufficientStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3749, "src": "11840:38:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 796, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11840:46:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 797, "nodeType": "RevertStatement", "src": "11833:53:0" } ] } }, { "expression": { "id": 806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "id": 800, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "11906:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker storage pointer" } }, "id": 802, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "11920:17:0", "memberName": "lockedStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3838, "src": "11906:31:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 803, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 760, "src": "11941:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11948:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "11941:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 805, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11941:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "11906:53:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 807, "nodeType": "ExpressionStatement", "src": "11906:53:0" }, { "eventCall": { "arguments": [ { "id": 809, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 758, "src": "11981:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 810, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 760, "src": "11989:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 808, "name": "Locked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2653, "src": "11974:6:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11974:22:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 812, "nodeType": "EmitStatement", "src": "11969:27:0" } ] }, "baseFunctions": [ 2680 ], "documentation": { "id": 756, "nodeType": "StructuredDocumentation", "src": "11450:28:0", "text": "@inheritdoc INodeStaking" }, "functionSelector": "282d3fdf", "implemented": true, "kind": "function", "modifiers": [ { "id": 765, "kind": "modifierInvocation", "modifierName": { "id": 764, "name": "onlyController", "nameLocations": [ "11561:14:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2581, "src": "11561:14:0" }, "nodeType": "ModifierInvocation", "src": "11561:14:0" } ], "name": "lock", "nameLocation": "11492:4:0", "overrides": { "id": 763, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 762, "name": "INodeStaking", "nameLocations": [ "11547:12:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2705, "src": "11547:12:0" } ], "src": "11538:22:0" }, "parameters": { "id": 761, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 758, "mutability": "mutable", "name": "staker", "nameLocation": "11505:6:0", "nodeType": "VariableDeclaration", "scope": 814, "src": "11497:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 757, "name": "address", "nodeType": "ElementaryTypeName", "src": "11497:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 760, "mutability": "mutable", "name": "amount", "nameLocation": "11521:6:0", "nodeType": "VariableDeclaration", "scope": 814, "src": "11513:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 759, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11513:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "11496:32:0" }, "returnParameters": { "id": 766, "nodeType": "ParameterList", "parameters": [], "src": "11576:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 874, "nodeType": "FunctionDefinition", "src": "12042:566:0", "nodes": [], "body": { "id": 873, "nodeType": "Block", "src": "12137:471:0", "nodes": [], "statements": [ { "assignments": [ 830 ], "declarations": [ { "constant": false, "id": 830, "mutability": "mutable", "name": "stakerAccount", "nameLocation": "12177:13:0", "nodeType": "VariableDeclaration", "scope": 873, "src": "12147:43:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" }, "typeName": { "id": 829, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 828, "name": "StakingPoolLib.Staker", "nameLocations": [ "12147:14:0", "12162:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3839, "src": "12147:21:0" }, "referencedDeclaration": 3839, "src": "12147:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" } }, "visibility": "internal" } ], "id": 835, "initialValue": { "baseExpression": { "expression": { "id": 831, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "12193:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 832, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12199:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "12193:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 834, "indexExpression": { "id": 833, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 817, "src": "12207:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12193:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "12147:67:0" }, { "condition": { "id": 838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "12228:25:0", "subExpression": { "expression": { "id": 836, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "12229:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker storage pointer" } }, "id": 837, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12243:10:0", "memberName": "isOperator", "nodeType": "MemberAccess", "referencedDeclaration": 3830, "src": "12229:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 846, "nodeType": "IfStatement", "src": "12224:106:0", "trueBody": { "id": 845, "nodeType": "Block", "src": "12255:75:0", "statements": [ { "errorCall": { "arguments": [ { "id": 842, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 817, "src": "12312:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 839, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "12276:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12291:20:0", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 3774, "src": "12276:35:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 843, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12276:43:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 844, "nodeType": "RevertStatement", "src": "12269:50:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 850, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 847, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "12343:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker storage pointer" } }, "id": 848, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12357:17:0", "memberName": "lockedStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3838, "src": "12343:31:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 849, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 819, "src": "12377:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "12343:40:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 859, "nodeType": "IfStatement", "src": "12339:161:0", "trueBody": { "id": 858, "nodeType": "Block", "src": "12385:115:0", "statements": [ { "errorCall": { "arguments": [ { "expression": { "id": 854, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "12457:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker storage pointer" } }, "id": 855, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12471:17:0", "memberName": "lockedStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3838, "src": "12457:31:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" } ], "expression": { "id": 851, "name": "INodeStaking", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2705, "src": "12406:12:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_INodeStaking_$2705_$", "typeString": "type(contract INodeStaking)" } }, "id": 853, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12419:37:0", "memberName": "InadequateOperatorLockedStakingAmount", "nodeType": "MemberAccess", "referencedDeclaration": 2672, "src": "12406:50:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 856, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12406:83:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 857, "nodeType": "RevertStatement", "src": "12399:90:0" } ] } }, { "expression": { "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "id": 860, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "12509:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker storage pointer" } }, "id": 862, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "12523:17:0", "memberName": "lockedStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3838, "src": "12509:31:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 863, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 819, "src": "12544:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12551:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "12544:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12544:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "12509:53:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 867, "nodeType": "ExpressionStatement", "src": "12509:53:0" }, { "eventCall": { "arguments": [ { "id": 869, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 817, "src": "12586:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 870, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 819, "src": "12594:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 868, "name": "Unlocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2660, "src": "12577:8:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 871, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12577:24:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 872, "nodeType": "EmitStatement", "src": "12572:29:0" } ] }, "baseFunctions": [ 2688 ], "documentation": { "id": 815, "nodeType": "StructuredDocumentation", "src": "12009:28:0", "text": "@inheritdoc INodeStaking" }, "functionSelector": "7eee288d", "implemented": true, "kind": "function", "modifiers": [ { "id": 824, "kind": "modifierInvocation", "modifierName": { "id": 823, "name": "onlyController", "nameLocations": [ "12122:14:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2581, "src": "12122:14:0" }, "nodeType": "ModifierInvocation", "src": "12122:14:0" } ], "name": "unlock", "nameLocation": "12051:6:0", "overrides": { "id": 822, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 821, "name": "INodeStaking", "nameLocations": [ "12108:12:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2705, "src": "12108:12:0" } ], "src": "12099:22:0" }, "parameters": { "id": 820, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 817, "mutability": "mutable", "name": "staker", "nameLocation": "12066:6:0", "nodeType": "VariableDeclaration", "scope": 874, "src": "12058:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 816, "name": "address", "nodeType": "ElementaryTypeName", "src": "12058:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 819, "mutability": "mutable", "name": "amount", "nameLocation": "12082:6:0", "nodeType": "VariableDeclaration", "scope": 874, "src": "12074:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 818, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12074:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "12057:32:0" }, "returnParameters": { "id": 825, "nodeType": "ParameterList", "parameters": [], "src": "12137:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 951, "nodeType": "FunctionDefinition", "src": "12647:763:0", "nodes": [], "body": { "id": 950, "nodeType": "Block", "src": "12757:653:0", "nodes": [], "statements": [ { "assignments": [ 890 ], "declarations": [ { "constant": false, "id": 890, "mutability": "mutable", "name": "stakerAccount", "nameLocation": "12796:13:0", "nodeType": "VariableDeclaration", "scope": 950, "src": "12767:42:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker" }, "typeName": { "id": 889, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 888, "name": "StakingPoolLib.Staker", "nameLocations": [ "12767:14:0", "12782:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3839, "src": "12767:21:0" }, "referencedDeclaration": 3839, "src": "12767:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" } }, "visibility": "internal" } ], "id": 895, "initialValue": { "baseExpression": { "expression": { "id": 891, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "12812:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 892, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12818:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "12812:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 894, "indexExpression": { "id": 893, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 877, "src": "12826:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12812:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "12767:66:0" }, { "condition": { "id": 898, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "12847:25:0", "subExpression": { "expression": { "id": 896, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 890, "src": "12848:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 897, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12862:10:0", "memberName": "isOperator", "nodeType": "MemberAccess", "referencedDeclaration": 3830, "src": "12848:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 906, "nodeType": "IfStatement", "src": "12843:106:0", "trueBody": { "id": 905, "nodeType": "Block", "src": "12874:75:0", "statements": [ { "errorCall": { "arguments": [ { "id": 902, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 877, "src": "12931:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 899, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "12895:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12910:20:0", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 3774, "src": "12895:35:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 903, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12895:43:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 904, "nodeType": "RevertStatement", "src": "12888:50:0" } ] } }, { "assignments": [ 908 ], "declarations": [ { "constant": false, "id": 908, "mutability": "mutable", "name": "earnedRewards", "nameLocation": "12966:13:0", "nodeType": "VariableDeclaration", "scope": 950, "src": "12958:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 907, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12958:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 917, "initialValue": { "arguments": [ { "id": 911, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 877, "src": "13038:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 912, "name": "getTotalDelegatedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1644, "src": "13046:23:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 913, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13046:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 914, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "13073:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 915, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13073:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 909, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "12982:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 910, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12990:34:0", "memberName": "_getOperatorEarnedDelegatedRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3563, "src": "12982:42:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Reward_$3094_storage_ptr_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,address,uint256,uint256) view returns (uint256)" } }, "id": 916, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12982:132:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "12958:156:0" }, { "assignments": [ 919 ], "declarations": [ { "constant": false, "id": 919, "mutability": "mutable", "name": "slashedRewards", "nameLocation": "13166:14:0", "nodeType": "VariableDeclaration", "scope": 950, "src": "13158:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 918, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13158:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 925, "initialValue": { "arguments": [ { "id": 922, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "13192:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 923, "name": "earnedRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 908, "src": "13200:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 920, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35255, "src": "13183:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Math_$35255_$", "typeString": "type(library Math)" } }, "id": 921, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13188:3:0", "memberName": "min", "nodeType": "MemberAccess", "referencedDeclaration": 34432, "src": "13183:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 924, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13183:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "13158:56:0" }, { "expression": { "id": 935, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "baseExpression": { "expression": { "id": 926, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "13224:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 929, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "13232:6:0", "memberName": "missed", "nodeType": "MemberAccess", "referencedDeclaration": 3081, "src": "13224:14:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MissedRewards_$3076_storage_$", "typeString": "mapping(address => struct RewardLib.MissedRewards storage ref)" } }, "id": 930, "indexExpression": { "id": 928, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 877, "src": "13239:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13224:22:0", "typeDescriptions": { "typeIdentifier": "t_struct$_MissedRewards_$3076_storage", "typeString": "struct RewardLib.MissedRewards storage ref" } }, "id": 931, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "13247:9:0", "memberName": "delegated", "nodeType": "MemberAccess", "referencedDeclaration": 3075, "src": "13224:32:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 932, "name": "slashedRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 919, "src": "13260:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 933, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13275:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "13260:24:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 934, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13260:26:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "13224:62:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 936, "nodeType": "ExpressionStatement", "src": "13224:62:0" }, { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 940, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 32119, "src": "13316:5:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 941, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13316:7:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 942, "name": "slashedRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 919, "src": "13325:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 937, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "13297:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 939, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13303:12:0", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 33487, "src": "13297:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$33394_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$33394_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13297:43:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 944, "nodeType": "ExpressionStatement", "src": "13297:43:0" }, { "eventCall": { "arguments": [ { "id": 946, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 877, "src": "13380:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 947, "name": "slashedRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 919, "src": "13388:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 945, "name": "DelegationRewardSlashed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2667, "src": "13356:23:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 948, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13356:47:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 949, "nodeType": "EmitStatement", "src": "13351:52:0" } ] }, "baseFunctions": [ 2696 ], "documentation": { "id": 875, "nodeType": "StructuredDocumentation", "src": "12614:28:0", "text": "@inheritdoc INodeStaking" }, "functionSelector": "8899fdeb", "implemented": true, "kind": "function", "modifiers": [ { "id": 884, "kind": "modifierInvocation", "modifierName": { "id": 883, "name": "onlyController", "nameLocations": [ "12742:14:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2581, "src": "12742:14:0" }, "nodeType": "ModifierInvocation", "src": "12742:14:0" } ], "name": "slashDelegationReward", "nameLocation": "12656:21:0", "overrides": { "id": 882, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 881, "name": "INodeStaking", "nameLocations": [ "12728:12:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2705, "src": "12728:12:0" } ], "src": "12719:22:0" }, "parameters": { "id": 880, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 877, "mutability": "mutable", "name": "staker", "nameLocation": "12686:6:0", "nodeType": "VariableDeclaration", "scope": 951, "src": "12678:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 876, "name": "address", "nodeType": "ElementaryTypeName", "src": "12678:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 879, "mutability": "mutable", "name": "amount", "nameLocation": "12702:6:0", "nodeType": "VariableDeclaration", "scope": 951, "src": "12694:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 878, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12694:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "12677:32:0" }, "returnParameters": { "id": 885, "nodeType": "ParameterList", "parameters": [], "src": "12757:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 968, "nodeType": "FunctionDefinition", "src": "13449:159:0", "nodes": [], "body": { "id": 967, "nodeType": "Block", "src": "13545:63:0", "nodes": [], "statements": [ { "expression": { "expression": { "baseExpression": { "expression": { "id": 961, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "13562:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 962, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "13568:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "13562:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 964, "indexExpression": { "id": 963, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 954, "src": "13576:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13562:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 965, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "13584:17:0", "memberName": "lockedStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3838, "src": "13562:39:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "functionReturnParameters": 960, "id": 966, "nodeType": "Return", "src": "13555:46:0" } ] }, "baseFunctions": [ 2704 ], "documentation": { "id": 952, "nodeType": "StructuredDocumentation", "src": "13416:28:0", "text": "@inheritdoc INodeStaking" }, "functionSelector": "929ec537", "implemented": true, "kind": "function", "modifiers": [], "name": "getLockedAmount", "nameLocation": "13458:15:0", "overrides": { "id": 957, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 956, "name": "INodeStaking", "nameLocations": [ "13513:12:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2705, "src": "13513:12:0" } ], "src": "13504:22:0" }, "parameters": { "id": 955, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 954, "mutability": "mutable", "name": "staker", "nameLocation": "13482:6:0", "nodeType": "VariableDeclaration", "scope": 968, "src": "13474:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 953, "name": "address", "nodeType": "ElementaryTypeName", "src": "13474:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "13473:16:0" }, "returnParameters": { "id": 960, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 959, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 968, "src": "13536:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 958, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13536:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "13535:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1040, "nodeType": "FunctionDefinition", "src": "13692:686:0", "nodes": [], "body": { "id": 1039, "nodeType": "Block", "src": "13765:613:0", "nodes": [], "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 981, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 978, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 971, "src": "13779:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "expression": { "id": 979, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "13788:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 980, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "13798:16:0", "memberName": "REWARD_PRECISION", "nodeType": "MemberAccess", "referencedDeclaration": 3057, "src": "13788:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "13779:35:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 990, "nodeType": "IfStatement", "src": "13775:139:0", "trueBody": { "id": 989, "nodeType": "Block", "src": "13816:98:0", "statements": [ { "errorCall": { "arguments": [ { "expression": { "id": 985, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "13876:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 986, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "13886:16:0", "memberName": "REWARD_PRECISION", "nodeType": "MemberAccess", "referencedDeclaration": 3057, "src": "13876:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 982, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "13837:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 984, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13852:23:0", "memberName": "InsufficientStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3749, "src": "13837:38:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 987, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13837:66:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 988, "nodeType": "RevertStatement", "src": "13830:73:0" } ] } }, { "assignments": [ 992 ], "declarations": [ { "constant": false, "id": 992, "mutability": "mutable", "name": "remainder", "nameLocation": "14004:9:0", "nodeType": "VariableDeclaration", "scope": 1039, "src": "13996:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 991, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13996:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 997, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 993, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 971, "src": "14016:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": { "expression": { "id": 994, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "14025:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 995, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "14035:16:0", "memberName": "REWARD_PRECISION", "nodeType": "MemberAccess", "referencedDeclaration": 3057, "src": "14025:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "14016:35:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "13996:55:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 998, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 992, "src": "14065:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14077:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "14065:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1006, "nodeType": "IfStatement", "src": "14061:63:0", "trueBody": { "id": 1005, "nodeType": "Block", "src": "14080:44:0", "statements": [ { "expression": { "id": 1003, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 1001, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 971, "src": "14094:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "id": 1002, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 992, "src": "14104:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "14094:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1004, "nodeType": "ExpressionStatement", "src": "14094:19:0" } ] } }, { "condition": { "arguments": [ { "expression": { "id": 1009, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "14156:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14160:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "14156:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 1007, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "14138:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1008, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "14144:11:0", "memberName": "_isOperator", "nodeType": "MemberAccess", "referencedDeclaration": 3985, "src": "14138:17:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Pool_$3853_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_Pool_$3853_storage_ptr_$", "typeString": "function (struct StakingPoolLib.Pool storage pointer,address) view returns (bool)" } }, "id": 1011, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14138:29:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1025, "nodeType": "Block", "src": "14236:68:0", "statements": [ { "expression": { "arguments": [ { "expression": { "id": 1020, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "14274:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14278:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "14274:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 1022, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 971, "src": "14286:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1019, "name": "_stakeAsCommunityStaker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2034, "src": "14250:23:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1023, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14250:43:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1024, "nodeType": "ExpressionStatement", "src": "14250:43:0" } ] }, "id": 1026, "nodeType": "IfStatement", "src": "14134:170:0", "trueBody": { "id": 1018, "nodeType": "Block", "src": "14169:61:0", "statements": [ { "expression": { "arguments": [ { "expression": { "id": 1013, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "14200:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14204:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "14200:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 1015, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 971, "src": "14212:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1012, "name": "_stakeAsOperator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2166, "src": "14183:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1016, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14183:36:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1017, "nodeType": "ExpressionStatement", "src": "14183:36:0" } ] } }, { "expression": { "arguments": [ { "expression": { "id": 1030, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "14337:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14341:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "14337:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "id": 1034, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "14357:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } ], "id": 1033, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "14349:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1032, "name": "address", "nodeType": "ElementaryTypeName", "src": "14349:7:0", "typeDescriptions": {} } }, "id": 1035, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14349:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 1036, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 971, "src": "14364:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1027, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "14314:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 1029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14320:16:0", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 33513, "src": "14314:22:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$33394_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$33394_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 1037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14314:57:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1038, "nodeType": "ExpressionStatement", "src": "14314:57:0" } ] }, "baseFunctions": [ 2761 ], "documentation": { "id": 969, "nodeType": "StructuredDocumentation", "src": "13663:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "a694fc3a", "implemented": true, "kind": "function", "modifiers": [ { "id": 976, "kind": "modifierInvocation", "modifierName": { "id": 975, "name": "whenNotPaused", "nameLocations": [ "13751:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32656, "src": "13751:13:0" }, "nodeType": "ModifierInvocation", "src": "13751:13:0" } ], "name": "stake", "nameLocation": "13701:5:0", "overrides": { "id": 974, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 973, "name": "IStaking", "nameLocations": [ "13741:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "13741:8:0" } ], "src": "13732:18:0" }, "parameters": { "id": 972, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 971, "mutability": "mutable", "name": "amount", "nameLocation": "13715:6:0", "nodeType": "VariableDeclaration", "scope": 1040, "src": "13707:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 970, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13707:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "13706:16:0" }, "returnParameters": { "id": 977, "nodeType": "ParameterList", "parameters": [], "src": "13765:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 1096, "nodeType": "FunctionDefinition", "src": "14413:531:0", "nodes": [], "body": { "id": 1095, "nodeType": "Block", "src": "14488:456:0", "nodes": [], "statements": [ { "assignments": [ 1051 ], "declarations": [ { "constant": false, "id": 1051, "mutability": "mutable", "name": "remainder", "nameLocation": "14580:9:0", "nodeType": "VariableDeclaration", "scope": 1095, "src": "14572:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1050, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14572:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1056, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1052, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "14592:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": { "expression": { "id": 1053, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "14601:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 1054, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "14611:16:0", "memberName": "REWARD_PRECISION", "nodeType": "MemberAccess", "referencedDeclaration": 3057, "src": "14601:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "14592:35:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "14572:55:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1057, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1051, "src": "14641:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 1058, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14653:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "14641:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1065, "nodeType": "IfStatement", "src": "14637:63:0", "trueBody": { "id": 1064, "nodeType": "Block", "src": "14656:44:0", "statements": [ { "expression": { "id": 1062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 1060, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "14670:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "id": 1061, "name": "remainder", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1051, "src": "14680:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "14670:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1063, "nodeType": "ExpressionStatement", "src": "14670:19:0" } ] } }, { "assignments": [ 1067, 1069 ], "declarations": [ { "constant": false, "id": 1067, "mutability": "mutable", "name": "baseReward", "nameLocation": "14719:10:0", "nodeType": "VariableDeclaration", "scope": 1095, "src": "14711:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1066, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14711:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 1069, "mutability": "mutable", "name": "delegationReward", "nameLocation": "14739:16:0", "nodeType": "VariableDeclaration", "scope": 1095, "src": "14731:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1068, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14731:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1076, "initialValue": { "arguments": [ { "expression": { "id": 1071, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "14765:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14769:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "14765:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 1073, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "14777:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "66616c7365", "id": 1074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "14785:5:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1070, "name": "_exit", "nodeType": "Identifier", "overloadedDeclarations": [ 2230, 2529 ], "referencedDeclaration": 2529, "src": "14759:5:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (address,uint256,bool) returns (uint256,uint256)" } }, "id": 1075, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14759:32:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256)" } }, "nodeType": "VariableDeclarationStatement", "src": "14710:81:0" }, { "expression": { "arguments": [ { "expression": { "id": 1080, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "14821:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14825:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "14821:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1084, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1082, "name": "baseReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1067, "src": "14833:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 1083, "name": "delegationReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1069, "src": "14846:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "14833:29:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1077, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "14802:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 1079, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14808:12:0", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 33487, "src": "14802:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$33394_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$33394_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 1085, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14802:61:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1086, "nodeType": "ExpressionStatement", "src": "14802:61:0" }, { "eventCall": { "arguments": [ { "expression": { "id": 1088, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "14888:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1089, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14892:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "14888:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 1090, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "14900:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 1091, "name": "baseReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1067, "src": "14908:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 1092, "name": "delegationReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1069, "src": "14920:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1087, "name": "Unstaked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2732, "src": "14879:8:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256,uint256)" } }, "id": 1093, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14879:58:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1094, "nodeType": "EmitStatement", "src": "14874:63:0" } ] }, "baseFunctions": [ 2767 ], "documentation": { "id": 1041, "nodeType": "StructuredDocumentation", "src": "14384:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "2e17de78", "implemented": true, "kind": "function", "modifiers": [ { "id": 1048, "kind": "modifierInvocation", "modifierName": { "id": 1047, "name": "whenNotPaused", "nameLocations": [ "14474:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32656, "src": "14474:13:0" }, "nodeType": "ModifierInvocation", "src": "14474:13:0" } ], "name": "unstake", "nameLocation": "14422:7:0", "overrides": { "id": 1046, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1045, "name": "IStaking", "nameLocations": [ "14464:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "14464:8:0" } ], "src": "14455:18:0" }, "parameters": { "id": 1044, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1043, "mutability": "mutable", "name": "amount", "nameLocation": "14438:6:0", "nodeType": "VariableDeclaration", "scope": 1096, "src": "14430:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1042, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14430:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "14429:16:0" }, "returnParameters": { "id": 1049, "nodeType": "ParameterList", "parameters": [], "src": "14488:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 1122, "nodeType": "FunctionDefinition", "src": "14979:204:0", "nodes": [], "body": { "id": 1121, "nodeType": "Block", "src": "15038:145:0", "nodes": [], "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 1104, "name": "claimReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1205, "src": "15048:11:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 1105, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15048:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1106, "nodeType": "ExpressionStatement", "src": "15048:13:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "expression": { "baseExpression": { "expression": { "id": 1107, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "15075:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1108, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "15081:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "15075:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 1111, "indexExpression": { "expression": { "id": 1109, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "15089:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15093:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "15089:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15075:25:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 1112, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "15101:16:0", "memberName": "frozenPrincipals", "nodeType": "MemberAccess", "referencedDeclaration": 3836, "src": "15075:42:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage ref" } }, "id": 1113, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15118:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "15075:49:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 1114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15127:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "15075:53:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1120, "nodeType": "IfStatement", "src": "15071:106:0", "trueBody": { "id": 1119, "nodeType": "Block", "src": "15130:47:0", "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 1116, "name": "claimFrozenPrincipal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1361, "src": "15144:20:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15144:22:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1118, "nodeType": "ExpressionStatement", "src": "15144:22:0" } ] } } ] }, "baseFunctions": [ 2771 ], "documentation": { "id": 1097, "nodeType": "StructuredDocumentation", "src": "14950:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "4e71d92d", "implemented": true, "kind": "function", "modifiers": [ { "id": 1102, "kind": "modifierInvocation", "modifierName": { "id": 1101, "name": "whenNotPaused", "nameLocations": [ "15024:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32656, "src": "15024:13:0" }, "nodeType": "ModifierInvocation", "src": "15024:13:0" } ], "name": "claim", "nameLocation": "14988:5:0", "overrides": { "id": 1100, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1099, "name": "IStaking", "nameLocations": [ "15014:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "15014:8:0" } ], "src": "15005:18:0" }, "parameters": { "id": 1098, "nodeType": "ParameterList", "parameters": [], "src": "14993:2:0" }, "returnParameters": { "id": 1103, "nodeType": "ParameterList", "parameters": [], "src": "15038:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 1205, "nodeType": "FunctionDefinition", "src": "15218:765:0", "nodes": [], "body": { "id": 1204, "nodeType": "Block", "src": "15281:702:0", "nodes": [], "statements": [ { "assignments": [ 1134 ], "declarations": [ { "constant": false, "id": 1134, "mutability": "mutable", "name": "stakerAccount", "nameLocation": "15320:13:0", "nodeType": "VariableDeclaration", "scope": 1204, "src": "15291:42:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker" }, "typeName": { "id": 1133, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 1132, "name": "StakingPoolLib.Staker", "nameLocations": [ "15291:14:0", "15306:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3839, "src": "15291:21:0" }, "referencedDeclaration": 3839, "src": "15291:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" } }, "visibility": "internal" } ], "id": 1140, "initialValue": { "baseExpression": { "expression": { "id": 1135, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "15336:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1136, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "15342:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "15336:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 1139, "indexExpression": { "expression": { "id": 1137, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "15350:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15354:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "15350:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15336:25:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "15291:70:0" }, { "condition": { "expression": { "id": 1141, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1134, "src": "15375:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 1142, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "15389:10:0", "memberName": "isOperator", "nodeType": "MemberAccess", "referencedDeclaration": 3830, "src": "15375:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1149, "nodeType": "IfStatement", "src": "15371:102:0", "trueBody": { "id": 1148, "nodeType": "Block", "src": "15401:72:0", "statements": [ { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 1143, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "15422:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15437:23:0", "memberName": "NoBaseRewardForOperator", "nodeType": "MemberAccess", "referencedDeclaration": 3777, "src": "15422:38:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 1146, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15422:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1147, "nodeType": "RevertStatement", "src": "15415:47:0" } ] } }, { "assignments": [ 1151 ], "declarations": [ { "constant": false, "id": 1151, "mutability": "mutable", "name": "accruedReward", "nameLocation": "15491:13:0", "nodeType": "VariableDeclaration", "scope": 1204, "src": "15483:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1150, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "15483:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1163, "initialValue": { "arguments": [ { "arguments": [ { "expression": { "id": 1156, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1134, "src": "15590:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 1157, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "15604:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "15590:26:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, { "id": 1158, "name": "_delegationRateDenominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "15618:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1154, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "15557:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15567:22:0", "memberName": "_getNonDelegatedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3463, "src": "15557:32:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15557:88:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 1160, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "15659:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1161, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15659:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1152, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "15507:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1153, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "15515:28:0", "memberName": "_calculateAccruedBaseRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3430, "src": "15507:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256) view returns (uint256)" } }, "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15507:193:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "15483:217:0" }, { "assignments": [ 1165 ], "declarations": [ { "constant": false, "id": 1165, "mutability": "mutable", "name": "claimingReward", "nameLocation": "15719:14:0", "nodeType": "VariableDeclaration", "scope": 1204, "src": "15711:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1164, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "15711:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1177, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1166, "name": "accruedReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1151, "src": "15736:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "arguments": [ { "expression": { "baseExpression": { "expression": { "id": 1169, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "15760:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1170, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "15768:6:0", "memberName": "missed", "nodeType": "MemberAccess", "referencedDeclaration": 3081, "src": "15760:14:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MissedRewards_$3076_storage_$", "typeString": "mapping(address => struct RewardLib.MissedRewards storage ref)" } }, "id": 1173, "indexExpression": { "expression": { "id": 1171, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "15775:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15779:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "15775:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15760:26:0", "typeDescriptions": { "typeIdentifier": "t_struct$_MissedRewards_$3076_storage", "typeString": "struct RewardLib.MissedRewards storage ref" } }, "id": 1174, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "15787:4:0", "memberName": "base", "nodeType": "MemberAccess", "referencedDeclaration": 3073, "src": "15760:31:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" } ], "id": 1168, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "15752:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1167, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "15752:7:0", "typeDescriptions": {} } }, "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15752:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "15736:56:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "15711:81:0" }, { "expression": { "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "baseExpression": { "expression": { "id": 1178, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "15803:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "15811:6:0", "memberName": "missed", "nodeType": "MemberAccess", "referencedDeclaration": 3081, "src": "15803:14:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MissedRewards_$3076_storage_$", "typeString": "mapping(address => struct RewardLib.MissedRewards storage ref)" } }, "id": 1183, "indexExpression": { "expression": { "id": 1180, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "15818:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15822:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "15818:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15803:26:0", "typeDescriptions": { "typeIdentifier": "t_struct$_MissedRewards_$3076_storage", "typeString": "struct RewardLib.MissedRewards storage ref" } }, "id": 1184, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "15830:4:0", "memberName": "base", "nodeType": "MemberAccess", "referencedDeclaration": 3073, "src": "15803:31:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 1185, "name": "accruedReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1151, "src": "15837:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15851:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "15837:23:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 1187, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15837:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "15803:59:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 1189, "nodeType": "ExpressionStatement", "src": "15803:59:0" }, { "expression": { "arguments": [ { "expression": { "id": 1193, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "15892:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15896:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "15892:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 1195, "name": "claimingReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "15904:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1190, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "15873:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 1192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15879:12:0", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 33487, "src": "15873:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$33394_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$33394_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 1196, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15873:46:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1197, "nodeType": "ExpressionStatement", "src": "15873:46:0" }, { "eventCall": { "arguments": [ { "expression": { "id": 1199, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "15949:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "15953:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "15949:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 1201, "name": "claimingReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "15961:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1198, "name": "RewardClaimed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2739, "src": "15935:13:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15935:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1203, "nodeType": "EmitStatement", "src": "15930:46:0" } ] }, "baseFunctions": [ 2775 ], "documentation": { "id": 1123, "nodeType": "StructuredDocumentation", "src": "15189:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "b88a802f", "implemented": true, "kind": "function", "modifiers": [ { "id": 1128, "kind": "modifierInvocation", "modifierName": { "id": 1127, "name": "whenNotPaused", "nameLocations": [ "15267:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32656, "src": "15267:13:0" }, "nodeType": "ModifierInvocation", "src": "15267:13:0" } ], "name": "claimReward", "nameLocation": "15227:11:0", "overrides": { "id": 1126, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1125, "name": "IStaking", "nameLocations": [ "15257:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "15257:8:0" } ], "src": "15248:18:0" }, "parameters": { "id": 1124, "nodeType": "ParameterList", "parameters": [], "src": "15238:2:0" }, "returnParameters": { "id": 1129, "nodeType": "ParameterList", "parameters": [], "src": "15281:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 1361, "nodeType": "FunctionDefinition", "src": "16018:1306:0", "nodes": [], "body": { "id": 1360, "nodeType": "Block", "src": "16090:1234:0", "nodes": [], "statements": [ { "assignments": [ 1218 ], "declarations": [ { "constant": false, "id": 1218, "mutability": "mutable", "name": "frozenPrincipals", "nameLocation": "16141:16:0", "nodeType": "VariableDeclaration", "scope": 1360, "src": "16100:57:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal[]" }, "typeName": { "baseType": { "id": 1216, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 1215, "name": "StakingPoolLib.FrozenPrincipal", "nameLocations": [ "16100:14:0", "16115:15:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3828, "src": "16100:30:0" }, "referencedDeclaration": 3828, "src": "16100:30:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal" } }, "id": 1217, "nodeType": "ArrayTypeName", "src": "16100:32:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal[]" } }, "visibility": "internal" } ], "id": 1225, "initialValue": { "expression": { "baseExpression": { "expression": { "id": 1219, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "16160:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1220, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "16166:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "16160:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 1223, "indexExpression": { "expression": { "id": 1221, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "16174:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "16178:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "16174:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16160:25:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 1224, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "16186:16:0", "memberName": "frozenPrincipals", "nodeType": "MemberAccess", "referencedDeclaration": 3836, "src": "16160:42:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "16100:102:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 1226, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1218, "src": "16216:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "16233:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "16216:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 1228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "16243:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "16216:28:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1237, "nodeType": "IfStatement", "src": "16212:95:0", "trueBody": { "errorCall": { "arguments": [ { "expression": { "id": 1233, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "16296:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "16300:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "16296:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 1230, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "16253:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "16268:27:0", "memberName": "FrozenPrincipalDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 3794, "src": "16253:42:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 1235, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "16253:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1236, "nodeType": "RevertStatement", "src": "16246:61:0" } }, { "assignments": [ 1239 ], "declarations": [ { "constant": false, "id": 1239, "mutability": "mutable", "name": "claimingPrincipal", "nameLocation": "16326:17:0", "nodeType": "VariableDeclaration", "scope": 1360, "src": "16318:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1238, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16318:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1241, "initialValue": { "hexValue": "30", "id": 1240, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "16346:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "16318:29:0" }, { "assignments": [ 1243 ], "declarations": [ { "constant": false, "id": 1243, "mutability": "mutable", "name": "popCount", "nameLocation": "16365:8:0", "nodeType": "VariableDeclaration", "scope": 1360, "src": "16357:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1242, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16357:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1245, "initialValue": { "hexValue": "30", "id": 1244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "16376:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "16357:20:0" }, { "body": { "id": 1292, "nodeType": "Block", "src": "16441:389:0", "statements": [ { "assignments": [ 1261 ], "declarations": [ { "constant": false, "id": 1261, "mutability": "mutable", "name": "frozenPrincipal", "nameLocation": "16494:15:0", "nodeType": "VariableDeclaration", "scope": 1292, "src": "16455:54:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal" }, "typeName": { "id": 1260, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 1259, "name": "StakingPoolLib.FrozenPrincipal", "nameLocations": [ "16455:14:0", "16470:15:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3828, "src": "16455:30:0" }, "referencedDeclaration": 3828, "src": "16455:30:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal" } }, "visibility": "internal" } ], "id": 1265, "initialValue": { "baseExpression": { "id": 1262, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1218, "src": "16512:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1264, "indexExpression": { "id": 1263, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1247, "src": "16529:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16512:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "16455:76:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "baseExpression": { "id": 1266, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1218, "src": "16549:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1268, "indexExpression": { "id": 1267, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1247, "src": "16566:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16549:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref" } }, "id": 1269, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "16569:15:0", "memberName": "unlockTimestamp", "nodeType": "MemberAccess", "referencedDeclaration": 3827, "src": "16549:35:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "expression": { "id": 1270, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "16588:5:0", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 1271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "16594:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "16588:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "16549:54:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1290, "nodeType": "Block", "src": "16782:38:0", "statements": [ { "id": 1289, "nodeType": "Break", "src": "16800:5:0" } ] }, "id": 1291, "nodeType": "IfStatement", "src": "16545:275:0", "trueBody": { "id": 1288, "nodeType": "Block", "src": "16605:171:0", "statements": [ { "expression": { "id": 1276, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 1273, "name": "claimingPrincipal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1239, "src": "16623:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "expression": { "id": 1274, "name": "frozenPrincipal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1261, "src": "16644:15:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage pointer" } }, "id": 1275, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "16660:6:0", "memberName": "amount", "nodeType": "MemberAccess", "referencedDeclaration": 3825, "src": "16644:22:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "16623:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1277, "nodeType": "ExpressionStatement", "src": "16623:43:0" }, { "expression": { "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "id": 1278, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "16684:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1280, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "16690:17:0", "memberName": "totalFrozenAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3852, "src": "16684:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "expression": { "id": 1281, "name": "frozenPrincipal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1261, "src": "16711:15:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage pointer" } }, "id": 1282, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "16727:6:0", "memberName": "amount", "nodeType": "MemberAccess", "referencedDeclaration": 3825, "src": "16711:22:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "16684:49:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1284, "nodeType": "ExpressionStatement", "src": "16684:49:0" }, { "expression": { "id": 1286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "16751:10:0", "subExpression": { "id": 1285, "name": "popCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "16751:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1287, "nodeType": "ExpressionStatement", "src": "16751:10:0" } ] } } ] }, "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1250, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1247, "src": "16407:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "expression": { "id": 1251, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1218, "src": "16411:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "16428:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "16411:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "16407:27:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1293, "initializationExpression": { "assignments": [ 1247 ], "declarations": [ { "constant": false, "id": 1247, "mutability": "mutable", "name": "i", "nameLocation": "16400:1:0", "nodeType": "VariableDeclaration", "scope": 1293, "src": "16392:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1246, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16392:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1249, "initialValue": { "hexValue": "30", "id": 1248, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "16404:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "16392:13:0" }, "loopExpression": { "expression": { "id": 1255, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "16436:3:0", "subExpression": { "id": 1254, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1247, "src": "16436:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1256, "nodeType": "ExpressionStatement", "src": "16436:3:0" }, "nodeType": "ForStatement", "src": "16387:443:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1294, "name": "popCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "16843:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 1295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "16854:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "16843:12:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1340, "nodeType": "IfStatement", "src": "16839:299:0", "trueBody": { "id": 1339, "nodeType": "Block", "src": "16857:281:0", "statements": [ { "body": { "id": 1320, "nodeType": "Block", "src": "16936:85:0", "statements": [ { "expression": { "id": 1318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 1310, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1218, "src": "16954:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1312, "indexExpression": { "id": 1311, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "16971:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "16954:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "baseExpression": { "id": 1313, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1218, "src": "16976:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1317, "indexExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1316, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1314, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "16993:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 1315, "name": "popCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "16997:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "16993:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16976:30:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref" } }, "src": "16954:52:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref" } }, "id": 1319, "nodeType": "ExpressionStatement", "src": "16954:52:0" } ] }, "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1301, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "16891:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 1302, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1218, "src": "16895:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "16912:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "16895:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 1304, "name": "popCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "16921:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "16895:34:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "16891:38:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1321, "initializationExpression": { "assignments": [ 1298 ], "declarations": [ { "constant": false, "id": 1298, "mutability": "mutable", "name": "i", "nameLocation": "16884:1:0", "nodeType": "VariableDeclaration", "scope": 1321, "src": "16876:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1297, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16876:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1300, "initialValue": { "hexValue": "30", "id": 1299, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "16888:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "16876:13:0" }, "loopExpression": { "expression": { "id": 1308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "16931:3:0", "subExpression": { "id": 1307, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "16931:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1309, "nodeType": "ExpressionStatement", "src": "16931:3:0" }, "nodeType": "ForStatement", "src": "16871:150:0" }, { "body": { "id": 1337, "nodeType": "Block", "src": "17073:55:0", "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 1332, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1218, "src": "17091:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "17108:3:0", "memberName": "pop", "nodeType": "MemberAccess", "src": "17091:20:0", "typeDescriptions": { "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr_$", "typeString": "function (struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer)" } }, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17091:22:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1336, "nodeType": "ExpressionStatement", "src": "17091:22:0" } ] }, "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1328, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1326, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1323, "src": "17054:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 1327, "name": "popCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "17058:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "17054:12:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1338, "initializationExpression": { "assignments": [ 1323 ], "declarations": [ { "constant": false, "id": 1323, "mutability": "mutable", "name": "i", "nameLocation": "17047:1:0", "nodeType": "VariableDeclaration", "scope": 1338, "src": "17039:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1322, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17039:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1325, "initialValue": { "hexValue": "30", "id": 1324, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17051:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "17039:13:0" }, "loopExpression": { "expression": { "id": 1330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "17068:3:0", "subExpression": { "id": 1329, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1323, "src": "17068:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1331, "nodeType": "ExpressionStatement", "src": "17068:3:0" }, "nodeType": "ForStatement", "src": "17034:94:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1341, "name": "claimingPrincipal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1239, "src": "17152:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 1342, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17172:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "17152:21:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1353, "nodeType": "IfStatement", "src": "17148:101:0", "trueBody": { "id": 1352, "nodeType": "Block", "src": "17175:74:0", "statements": [ { "expression": { "arguments": [ { "expression": { "id": 1347, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "17208:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1348, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "17212:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "17208:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 1349, "name": "claimingPrincipal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1239, "src": "17220:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1344, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "17189:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 1346, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "17195:12:0", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 33487, "src": "17189:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$33394_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$33394_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 1350, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17189:49:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1351, "nodeType": "ExpressionStatement", "src": "17189:49:0" } ] } }, { "eventCall": { "arguments": [ { "expression": { "id": 1355, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "17287:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "17291:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "17287:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 1357, "name": "claimingPrincipal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1239, "src": "17299:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1354, "name": "FrozenPrincipalClaimed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2746, "src": "17264:22:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1358, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17264:53:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1359, "nodeType": "EmitStatement", "src": "17259:58:0" } ] }, "baseFunctions": [ 2779 ], "documentation": { "id": 1206, "nodeType": "StructuredDocumentation", "src": "15989:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "e8376b8a", "implemented": true, "kind": "function", "modifiers": [ { "id": 1211, "kind": "modifierInvocation", "modifierName": { "id": 1210, "name": "whenNotPaused", "nameLocations": [ "16076:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32656, "src": "16076:13:0" }, "nodeType": "ModifierInvocation", "src": "16076:13:0" } ], "name": "claimFrozenPrincipal", "nameLocation": "16027:20:0", "overrides": { "id": 1209, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1208, "name": "IStaking", "nameLocations": [ "16066:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "16066:8:0" } ], "src": "16057:18:0" }, "parameters": { "id": 1207, "nodeType": "ParameterList", "parameters": [], "src": "16047:2:0" }, "returnParameters": { "id": 1212, "nodeType": "ParameterList", "parameters": [], "src": "16090:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 1378, "nodeType": "FunctionDefinition", "src": "17359:141:0", "nodes": [], "body": { "id": 1377, "nodeType": "Block", "src": "17442:58:0", "nodes": [], "statements": [ { "expression": { "expression": { "baseExpression": { "expression": { "id": 1371, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "17459:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1372, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17465:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "17459:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 1374, "indexExpression": { "id": 1373, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1364, "src": "17473:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17459:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 1375, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17481:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "17459:34:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "functionReturnParameters": 1370, "id": 1376, "nodeType": "Return", "src": "17452:41:0" } ] }, "baseFunctions": [ 2793 ], "documentation": { "id": 1362, "nodeType": "StructuredDocumentation", "src": "17330:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "7a766460", "implemented": true, "kind": "function", "modifiers": [], "name": "getStake", "nameLocation": "17368:8:0", "overrides": { "id": 1367, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1366, "name": "IStaking", "nameLocations": [ "17414:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "17414:8:0" } ], "src": "17405:18:0" }, "parameters": { "id": 1365, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1364, "mutability": "mutable", "name": "staker", "nameLocation": "17385:6:0", "nodeType": "VariableDeclaration", "scope": 1378, "src": "17377:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1363, "name": "address", "nodeType": "ElementaryTypeName", "src": "17377:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "17376:16:0" }, "returnParameters": { "id": 1370, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1369, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1378, "src": "17433:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1368, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17433:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "17432:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 1394, "nodeType": "FunctionDefinition", "src": "17535:133:0", "nodes": [], "body": { "id": 1393, "nodeType": "Block", "src": "17619:49:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "id": 1390, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1381, "src": "17654:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 1388, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "17636:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1389, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17642:11:0", "memberName": "_isOperator", "nodeType": "MemberAccess", "referencedDeclaration": 3985, "src": "17636:17:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Pool_$3853_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_Pool_$3853_storage_ptr_$", "typeString": "function (struct StakingPoolLib.Pool storage pointer,address) view returns (bool)" } }, "id": 1391, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17636:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1387, "id": 1392, "nodeType": "Return", "src": "17629:32:0" } ] }, "baseFunctions": [ 2801 ], "documentation": { "id": 1379, "nodeType": "StructuredDocumentation", "src": "17506:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "6d70f7ae", "implemented": true, "kind": "function", "modifiers": [], "name": "isOperator", "nameLocation": "17544:10:0", "overrides": { "id": 1384, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1383, "name": "IStaking", "nameLocations": [ "17594:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "17594:8:0" } ], "src": "17585:18:0" }, "parameters": { "id": 1382, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1381, "mutability": "mutable", "name": "staker", "nameLocation": "17563:6:0", "nodeType": "VariableDeclaration", "scope": 1394, "src": "17555:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1380, "name": "address", "nodeType": "ElementaryTypeName", "src": "17555:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "17554:16:0" }, "returnParameters": { "id": 1387, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1386, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1394, "src": "17613:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1385, "name": "bool", "nodeType": "ElementaryTypeName", "src": "17613:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "17612:6:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1412, "nodeType": "FunctionDefinition", "src": "17703:134:0", "nodes": [], "body": { "id": 1411, "nodeType": "Block", "src": "17769:68:0", "nodes": [], "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "expression": { "id": 1402, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "17786:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1403, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17792:5:0", "memberName": "state", "nodeType": "MemberAccess", "referencedDeclaration": 3847, "src": "17786:11:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolState_$3823_storage", "typeString": "struct StakingPoolLib.PoolState storage ref" } }, "id": 1404, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17798:6:0", "memberName": "isOpen", "nodeType": "MemberAccess", "referencedDeclaration": 3816, "src": "17786:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "id": 1408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "17808:22:0", "subExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 1405, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "17809:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1406, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17817:11:0", "memberName": "_isDepleted", "nodeType": "MemberAccess", "referencedDeclaration": 3168, "src": "17809:19:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Reward_$3094_storage_ptr_$returns$_t_bool_$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer) view returns (bool)" } }, "id": 1407, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17809:21:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "17786:44:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1401, "id": 1410, "nodeType": "Return", "src": "17779:51:0" } ] }, "baseFunctions": [ 2807 ], "documentation": { "id": 1395, "nodeType": "StructuredDocumentation", "src": "17674:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "22f3e2d4", "implemented": true, "kind": "function", "modifiers": [], "name": "isActive", "nameLocation": "17712:8:0", "overrides": { "id": 1398, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1397, "name": "IStaking", "nameLocations": [ "17744:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "17744:8:0" } ], "src": "17735:18:0" }, "parameters": { "id": 1396, "nodeType": "ParameterList", "parameters": [], "src": "17720:2:0" }, "returnParameters": { "id": 1401, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1400, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1412, "src": "17763:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1399, "name": "bool", "nodeType": "ElementaryTypeName", "src": "17763:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "17762:6:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 1428, "nodeType": "FunctionDefinition", "src": "17872:134:0", "nodes": [], "body": { "id": 1427, "nodeType": "Block", "src": "17949:57:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "expression": { "expression": { "id": 1422, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "17974:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1423, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17980:6:0", "memberName": "limits", "nodeType": "MemberAccess", "referencedDeclaration": 3850, "src": "17974:12:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolLimits_$3814_storage", "typeString": "struct StakingPoolLib.PoolLimits storage ref" } }, "id": 1424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17987:11:0", "memberName": "maxPoolSize", "nodeType": "MemberAccess", "referencedDeclaration": 3811, "src": "17974:24:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" } ], "id": 1421, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "17966:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1420, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17966:7:0", "typeDescriptions": {} } }, "id": 1425, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17966:33:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1419, "id": 1426, "nodeType": "Return", "src": "17959:40:0" } ] }, "baseFunctions": [ 2813 ], "documentation": { "id": 1413, "nodeType": "StructuredDocumentation", "src": "17843:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "0fbc8f5b", "implemented": true, "kind": "function", "modifiers": [], "name": "getMaxPoolSize", "nameLocation": "17881:14:0", "overrides": { "id": 1416, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1415, "name": "IStaking", "nameLocations": [ "17921:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "17921:8:0" } ], "src": "17912:18:0" }, "parameters": { "id": 1414, "nodeType": "ParameterList", "parameters": [], "src": "17895:2:0" }, "returnParameters": { "id": 1419, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1418, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1428, "src": "17940:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1417, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17940:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "17939:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1448, "nodeType": "FunctionDefinition", "src": "18041:193:0", "nodes": [], "body": { "id": 1447, "nodeType": "Block", "src": "18137:97:0", "nodes": [], "statements": [ { "expression": { "components": [ { "id": 1438, "name": "_minCommunityStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, "src": "18155:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [ { "expression": { "expression": { "id": 1441, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "18189:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1442, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18195:6:0", "memberName": "limits", "nodeType": "MemberAccess", "referencedDeclaration": 3850, "src": "18189:12:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolLimits_$3814_storage", "typeString": "struct StakingPoolLib.PoolLimits storage ref" } }, "id": 1443, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18202:23:0", "memberName": "maxCommunityStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3813, "src": "18189:36:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" } ], "id": 1440, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "18181:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1439, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18181:7:0", "typeDescriptions": {} } }, "id": 1444, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18181:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 1445, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "18154:73:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256)" } }, "functionReturnParameters": 1437, "id": 1446, "nodeType": "Return", "src": "18147:80:0" } ] }, "baseFunctions": [ 2821 ], "documentation": { "id": 1429, "nodeType": "StructuredDocumentation", "src": "18012:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "0641bdd8", "implemented": true, "kind": "function", "modifiers": [], "name": "getCommunityStakerLimits", "nameLocation": "18050:24:0", "overrides": { "id": 1432, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1431, "name": "IStaking", "nameLocations": [ "18100:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "18100:8:0" } ], "src": "18091:18:0" }, "parameters": { "id": 1430, "nodeType": "ParameterList", "parameters": [], "src": "18074:2:0" }, "returnParameters": { "id": 1437, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1434, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1448, "src": "18119:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18119:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 1436, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1448, "src": "18128:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1435, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18128:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "18118:18:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1459, "nodeType": "FunctionDefinition", "src": "18269:123:0", "nodes": [], "body": { "id": 1458, "nodeType": "Block", "src": "18348:44:0", "nodes": [], "statements": [ { "expression": { "id": 1456, "name": "_operatorStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "18365:20:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1455, "id": 1457, "nodeType": "Return", "src": "18358:27:0" } ] }, "baseFunctions": [ 2827 ], "documentation": { "id": 1449, "nodeType": "StructuredDocumentation", "src": "18240:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "2624c83c", "implemented": true, "kind": "function", "modifiers": [], "name": "getOperatorLimit", "nameLocation": "18278:16:0", "overrides": { "id": 1452, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1451, "name": "IStaking", "nameLocations": [ "18320:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "18320:8:0" } ], "src": "18311:18:0" }, "parameters": { "id": 1450, "nodeType": "ParameterList", "parameters": [], "src": "18294:2:0" }, "returnParameters": { "id": 1455, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1454, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1459, "src": "18339:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1453, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18339:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "18338:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1482, "nodeType": "FunctionDefinition", "src": "18427:179:0", "nodes": [], "body": { "id": 1481, "nodeType": "Block", "src": "18518:88:0", "nodes": [], "statements": [ { "expression": { "components": [ { "arguments": [ { "expression": { "id": 1471, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "18544:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1472, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18552:14:0", "memberName": "startTimestamp", "nodeType": "MemberAccess", "referencedDeclaration": 3093, "src": "18544:22:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1470, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "18536:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1469, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18536:7:0", "typeDescriptions": {} } }, "id": 1473, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18536:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [ { "expression": { "id": 1476, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "18577:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1477, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18585:12:0", "memberName": "endTimestamp", "nodeType": "MemberAccess", "referencedDeclaration": 3091, "src": "18577:20:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1475, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "18569:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1474, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18569:7:0", "typeDescriptions": {} } }, "id": 1478, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18569:29:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 1479, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "18535:64:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256)" } }, "functionReturnParameters": 1468, "id": 1480, "nodeType": "Return", "src": "18528:71:0" } ] }, "baseFunctions": [ 2835 ], "documentation": { "id": 1460, "nodeType": "StructuredDocumentation", "src": "18398:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "59f01879", "implemented": true, "kind": "function", "modifiers": [], "name": "getRewardTimestamps", "nameLocation": "18436:19:0", "overrides": { "id": 1463, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1462, "name": "IStaking", "nameLocations": [ "18481:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "18481:8:0" } ], "src": "18472:18:0" }, "parameters": { "id": 1461, "nodeType": "ParameterList", "parameters": [], "src": "18455:2:0" }, "returnParameters": { "id": 1468, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1465, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1482, "src": "18500:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1464, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18500:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 1467, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1482, "src": "18509:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1466, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18509:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "18499:18:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1497, "nodeType": "FunctionDefinition", "src": "18641:121:0", "nodes": [], "body": { "id": 1496, "nodeType": "Block", "src": "18717:45:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "expression": { "id": 1492, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "18742:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1493, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18750:4:0", "memberName": "rate", "nodeType": "MemberAccess", "referencedDeclaration": 3089, "src": "18742:12:0", "typeDescriptions": { "typeIdentifier": "t_uint80", "typeString": "uint80" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint80", "typeString": "uint80" } ], "id": 1491, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "18734:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1490, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18734:7:0", "typeDescriptions": {} } }, "id": 1494, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18734:21:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1489, "id": 1495, "nodeType": "Return", "src": "18727:28:0" } ] }, "baseFunctions": [ 2841 ], "documentation": { "id": 1483, "nodeType": "StructuredDocumentation", "src": "18612:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "7e1a3786", "implemented": true, "kind": "function", "modifiers": [], "name": "getRewardRate", "nameLocation": "18650:13:0", "overrides": { "id": 1486, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1485, "name": "IStaking", "nameLocations": [ "18689:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "18689:8:0" } ], "src": "18680:18:0" }, "parameters": { "id": 1484, "nodeType": "ParameterList", "parameters": [], "src": "18663:2:0" }, "returnParameters": { "id": 1489, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1488, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1497, "src": "18708:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1487, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18708:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "18707:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1508, "nodeType": "FunctionDefinition", "src": "18797:141:0", "nodes": [], "body": { "id": 1507, "nodeType": "Block", "src": "18888:50:0", "nodes": [], "statements": [ { "expression": { "id": 1505, "name": "_delegationRateDenominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "18905:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1504, "id": 1506, "nodeType": "Return", "src": "18898:33:0" } ] }, "baseFunctions": [ 2847 ], "documentation": { "id": 1498, "nodeType": "StructuredDocumentation", "src": "18768:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "5e8b40d7", "implemented": true, "kind": "function", "modifiers": [], "name": "getDelegationRateDenominator", "nameLocation": "18806:28:0", "overrides": { "id": 1501, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1500, "name": "IStaking", "nameLocations": [ "18860:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "18860:8:0" } ], "src": "18851:18:0" }, "parameters": { "id": 1499, "nodeType": "ParameterList", "parameters": [], "src": "18834:2:0" }, "returnParameters": { "id": 1504, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1503, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1508, "src": "18879:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1502, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18879:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "18878:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1531, "nodeType": "FunctionDefinition", "src": "18973:184:0", "nodes": [], "body": { "id": 1530, "nodeType": "Block", "src": "19052:105:0", "nodes": [], "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1525, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "arguments": [ { "id": 1520, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "19093:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Staking_$2582", "typeString": "contract Staking" } ], "id": 1519, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "19085:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1518, "name": "address", "nodeType": "ElementaryTypeName", "src": "19085:7:0", "typeDescriptions": {} } }, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19085:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 1516, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "19069:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } }, "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "19075:9:0", "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 33351, "src": "19069:15:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1522, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19069:30:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 1523, "name": "getTotalStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1686, "src": "19102:20:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1524, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19102:22:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "19069:55:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "expression": { "id": 1526, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "19127:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19133:17:0", "memberName": "totalFrozenAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3852, "src": "19127:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "19069:81:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1515, "id": 1529, "nodeType": "Return", "src": "19062:88:0" } ] }, "baseFunctions": [ 2853 ], "documentation": { "id": 1509, "nodeType": "StructuredDocumentation", "src": "18944:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "e0974ea5", "implemented": true, "kind": "function", "modifiers": [], "name": "getAvailableReward", "nameLocation": "18982:18:0", "overrides": { "id": 1512, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1511, "name": "IStaking", "nameLocations": [ "19024:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "19024:8:0" } ], "src": "19015:18:0" }, "parameters": { "id": 1510, "nodeType": "ParameterList", "parameters": [], "src": "19000:2:0" }, "returnParameters": { "id": 1515, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1514, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1531, "src": "19043:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1513, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19043:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "19042:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 1584, "nodeType": "FunctionDefinition", "src": "19192:501:0", "nodes": [], "body": { "id": 1583, "nodeType": "Block", "src": "19280:413:0", "nodes": [], "statements": [ { "assignments": [ 1542 ], "declarations": [ { "constant": false, "id": 1542, "mutability": "mutable", "name": "stakedAmount", "nameLocation": "19298:12:0", "nodeType": "VariableDeclaration", "scope": 1583, "src": "19290:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1541, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19290:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1548, "initialValue": { "expression": { "baseExpression": { "expression": { "id": 1543, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "19313:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1544, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19319:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "19313:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 1546, "indexExpression": { "id": 1545, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1534, "src": "19327:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19313:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 1547, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19335:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "19313:34:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "VariableDeclarationStatement", "src": "19290:57:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1549, "name": "stakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1542, "src": "19361:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 1550, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "19377:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "19361:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1554, "nodeType": "IfStatement", "src": "19357:31:0", "trueBody": { "expression": { "hexValue": "30", "id": 1552, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "19387:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "functionReturnParameters": 1540, "id": 1553, "nodeType": "Return", "src": "19380:8:0" } }, { "condition": { "arguments": [ { "id": 1557, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1534, "src": "19421:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 1555, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "19403:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1556, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19409:11:0", "memberName": "_isOperator", "nodeType": "MemberAccess", "referencedDeclaration": 3985, "src": "19403:17:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Pool_$3853_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_Pool_$3853_storage_ptr_$", "typeString": "function (struct StakingPoolLib.Pool storage pointer,address) view returns (bool)" } }, "id": 1558, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19403:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1562, "nodeType": "IfStatement", "src": "19399:64:0", "trueBody": { "id": 1561, "nodeType": "Block", "src": "19430:33:0", "statements": [ { "expression": { "hexValue": "30", "id": 1559, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "19451:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "functionReturnParameters": 1540, "id": 1560, "nodeType": "Return", "src": "19444:8:0" } ] } }, { "expression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "arguments": [ { "id": 1567, "name": "stakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1542, "src": "19563:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 1568, "name": "_delegationRateDenominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "19577:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1565, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "19530:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 1566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "19540:22:0", "memberName": "_getNonDelegatedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3463, "src": "19530:32:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19530:74:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 1570, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "19606:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1571, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19606:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1563, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "19480:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1564, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19488:28:0", "memberName": "_calculateAccruedBaseRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3430, "src": "19480:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256) view returns (uint256)" } }, "id": 1572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19480:167:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "arguments": [ { "expression": { "baseExpression": { "expression": { "id": 1575, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "19658:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1576, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19666:6:0", "memberName": "missed", "nodeType": "MemberAccess", "referencedDeclaration": 3081, "src": "19658:14:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MissedRewards_$3076_storage_$", "typeString": "mapping(address => struct RewardLib.MissedRewards storage ref)" } }, "id": 1578, "indexExpression": { "id": 1577, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1534, "src": "19673:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19658:22:0", "typeDescriptions": { "typeIdentifier": "t_struct$_MissedRewards_$3076_storage", "typeString": "struct RewardLib.MissedRewards storage ref" } }, "id": 1579, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19681:4:0", "memberName": "base", "nodeType": "MemberAccess", "referencedDeclaration": 3073, "src": "19658:27:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" } ], "id": 1574, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "19650:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1573, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19650:7:0", "typeDescriptions": {} } }, "id": 1580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19650:36:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "19480:206:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1540, "id": 1582, "nodeType": "Return", "src": "19473:213:0" } ] }, "baseFunctions": [ 2861 ], "documentation": { "id": 1532, "nodeType": "StructuredDocumentation", "src": "19163:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "9a109bc2", "implemented": true, "kind": "function", "modifiers": [], "name": "getBaseReward", "nameLocation": "19201:13:0", "overrides": { "id": 1537, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1536, "name": "IStaking", "nameLocations": [ "19252:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "19252:8:0" } ], "src": "19243:18:0" }, "parameters": { "id": 1535, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1534, "mutability": "mutable", "name": "staker", "nameLocation": "19223:6:0", "nodeType": "VariableDeclaration", "scope": 1584, "src": "19215:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1533, "name": "address", "nodeType": "ElementaryTypeName", "src": "19215:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "19214:16:0" }, "returnParameters": { "id": 1540, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1539, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1584, "src": "19271:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1538, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19271:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "19270:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 1627, "nodeType": "FunctionDefinition", "src": "19728:430:0", "nodes": [], "body": { "id": 1626, "nodeType": "Block", "src": "19822:336:0", "nodes": [], "statements": [ { "assignments": [ 1598 ], "declarations": [ { "constant": false, "id": 1598, "mutability": "mutable", "name": "stakerAccount", "nameLocation": "19861:13:0", "nodeType": "VariableDeclaration", "scope": 1626, "src": "19832:42:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker" }, "typeName": { "id": 1597, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 1596, "name": "StakingPoolLib.Staker", "nameLocations": [ "19832:14:0", "19847:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3839, "src": "19832:21:0" }, "referencedDeclaration": 3839, "src": "19832:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" } }, "visibility": "internal" } ], "id": 1603, "initialValue": { "baseExpression": { "expression": { "id": 1599, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "19877:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19883:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "19877:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 1602, "indexExpression": { "id": 1601, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1587, "src": "19891:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19877:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "19832:66:0" }, { "condition": { "id": 1606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "19912:25:0", "subExpression": { "expression": { "id": 1604, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1598, "src": "19913:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 1605, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19927:10:0", "memberName": "isOperator", "nodeType": "MemberAccess", "referencedDeclaration": 3830, "src": "19913:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1609, "nodeType": "IfStatement", "src": "19908:39:0", "trueBody": { "expression": { "hexValue": "30", "id": 1607, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "19946:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "functionReturnParameters": 1593, "id": 1608, "nodeType": "Return", "src": "19939:8:0" } }, { "condition": { "commonType": { "typeIdentifier": "t_uint96", "typeString": "uint96" }, "id": 1613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 1610, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1598, "src": "19961:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 1611, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19975:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "19961:26:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 1612, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "19991:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "19961:31:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1616, "nodeType": "IfStatement", "src": "19957:45:0", "trueBody": { "expression": { "hexValue": "30", "id": 1614, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "20001:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "functionReturnParameters": 1593, "id": 1615, "nodeType": "Return", "src": "19994:8:0" } }, { "expression": { "arguments": [ { "id": 1619, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1587, "src": "20075:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 1620, "name": "getTotalDelegatedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1644, "src": "20083:23:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1621, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20083:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 1622, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "20110:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1623, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20110:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1617, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "20019:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1618, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20027:34:0", "memberName": "_getOperatorEarnedDelegatedRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3563, "src": "20019:42:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Reward_$3094_storage_ptr_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,address,uint256,uint256) view returns (uint256)" } }, "id": 1624, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20019:132:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1593, "id": 1625, "nodeType": "Return", "src": "20012:139:0" } ] }, "baseFunctions": [ 2869 ], "documentation": { "id": 1585, "nodeType": "StructuredDocumentation", "src": "19699:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "87e900b1", "implemented": true, "kind": "function", "modifiers": [], "name": "getDelegationReward", "nameLocation": "19737:19:0", "overrides": { "id": 1590, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1589, "name": "IStaking", "nameLocations": [ "19794:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "19794:8:0" } ], "src": "19785:18:0" }, "parameters": { "id": 1588, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1587, "mutability": "mutable", "name": "staker", "nameLocation": "19765:6:0", "nodeType": "VariableDeclaration", "scope": 1627, "src": "19757:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1586, "name": "address", "nodeType": "ElementaryTypeName", "src": "19757:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "19756:16:0" }, "returnParameters": { "id": 1593, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1592, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1627, "src": "19813:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1591, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19813:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "19812:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 1644, "nodeType": "FunctionDefinition", "src": "20193:205:0", "nodes": [], "body": { "id": 1643, "nodeType": "Block", "src": "20277:121:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "expression": { "expression": { "id": 1637, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "20324:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1638, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20330:5:0", "memberName": "state", "nodeType": "MemberAccess", "referencedDeclaration": 3847, "src": "20324:11:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolState_$3823_storage", "typeString": "struct StakingPoolLib.PoolState storage ref" } }, "id": 1639, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20336:26:0", "memberName": "totalCommunityStakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3820, "src": "20324:38:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, { "id": 1640, "name": "_delegationRateDenominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "20364:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1635, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "20294:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 1636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "20304:19:0", "memberName": "_getDelegatedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3445, "src": "20294:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1641, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20294:97:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1634, "id": 1642, "nodeType": "Return", "src": "20287:104:0" } ] }, "baseFunctions": [ 2875 ], "documentation": { "id": 1628, "nodeType": "StructuredDocumentation", "src": "20164:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "a7a2f5aa", "implemented": true, "kind": "function", "modifiers": [], "name": "getTotalDelegatedAmount", "nameLocation": "20202:23:0", "overrides": { "id": 1631, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1630, "name": "IStaking", "nameLocations": [ "20249:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "20249:8:0" } ], "src": "20240:18:0" }, "parameters": { "id": 1629, "nodeType": "ParameterList", "parameters": [], "src": "20225:2:0" }, "returnParameters": { "id": 1634, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1633, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1644, "src": "20268:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1632, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "20268:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "20267:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 1660, "nodeType": "FunctionDefinition", "src": "20433:145:0", "nodes": [], "body": { "id": 1659, "nodeType": "Block", "src": "20513:65:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "expression": { "expression": { "id": 1654, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "20538:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1655, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20546:9:0", "memberName": "delegated", "nodeType": "MemberAccess", "referencedDeclaration": 3084, "src": "20538:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_DelegatedRewards_$3064_storage", "typeString": "struct RewardLib.DelegatedRewards storage ref" } }, "id": 1656, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20556:14:0", "memberName": "delegatesCount", "nodeType": "MemberAccess", "referencedDeclaration": 3059, "src": "20538:32:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1653, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "20530:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1652, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "20530:7:0", "typeDescriptions": {} } }, "id": 1657, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20530:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1651, "id": 1658, "nodeType": "Return", "src": "20523:48:0" } ] }, "baseFunctions": [ 2881 ], "documentation": { "id": 1645, "nodeType": "StructuredDocumentation", "src": "20404:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "32e28850", "implemented": true, "kind": "function", "modifiers": [], "name": "getDelegatesCount", "nameLocation": "20442:17:0", "overrides": { "id": 1648, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1647, "name": "IStaking", "nameLocations": [ "20485:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "20485:8:0" } ], "src": "20476:18:0" }, "parameters": { "id": 1646, "nodeType": "ParameterList", "parameters": [], "src": "20459:2:0" }, "returnParameters": { "id": 1651, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1650, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1660, "src": "20504:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1649, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "20504:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "20503:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1673, "nodeType": "FunctionDefinition", "src": "20584:135:0", "nodes": [], "body": { "id": 1672, "nodeType": "Block", "src": "20652:67:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "expression": { "expression": { "id": 1667, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "20677:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1668, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20685:4:0", "memberName": "base", "nodeType": "MemberAccess", "referencedDeclaration": 3087, "src": "20677:12:0", "typeDescriptions": { "typeIdentifier": "t_struct$_BaseRewards_$3071_storage", "typeString": "struct RewardLib.BaseRewards storage ref" } }, "id": 1669, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20690:21:0", "memberName": "communityStakersCount", "nodeType": "MemberAccess", "referencedDeclaration": 3066, "src": "20677:34:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1666, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "20669:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1665, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "20669:7:0", "typeDescriptions": {} } }, "id": 1670, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20669:43:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1664, "id": 1671, "nodeType": "Return", "src": "20662:50:0" } ] }, "baseFunctions": [ 2887 ], "functionSelector": "ed63e807", "implemented": true, "kind": "function", "modifiers": [], "name": "getCommunityStakersCount", "nameLocation": "20593:24:0", "parameters": { "id": 1661, "nodeType": "ParameterList", "parameters": [], "src": "20617:2:0" }, "returnParameters": { "id": 1664, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1663, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1673, "src": "20643:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1662, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "20643:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "20642:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1686, "nodeType": "FunctionDefinition", "src": "20754:134:0", "nodes": [], "body": { "id": 1685, "nodeType": "Block", "src": "20835:53:0", "nodes": [], "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 1681, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "20852:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1682, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20858:21:0", "memberName": "_getTotalStakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 4015, "src": "20852:27:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Pool_$3853_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Pool_$3853_storage_ptr_$", "typeString": "function (struct StakingPoolLib.Pool storage pointer) view returns (uint256)" } }, "id": 1683, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20852:29:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1680, "id": 1684, "nodeType": "Return", "src": "20845:36:0" } ] }, "baseFunctions": [ 2893 ], "documentation": { "id": 1674, "nodeType": "StructuredDocumentation", "src": "20725:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "38adb6f0", "implemented": true, "kind": "function", "modifiers": [], "name": "getTotalStakedAmount", "nameLocation": "20763:20:0", "overrides": { "id": 1677, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1676, "name": "IStaking", "nameLocations": [ "20807:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "20807:8:0" } ], "src": "20798:18:0" }, "parameters": { "id": 1675, "nodeType": "ParameterList", "parameters": [], "src": "20783:2:0" }, "returnParameters": { "id": 1680, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1679, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1686, "src": "20826:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1678, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "20826:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "20825:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 1699, "nodeType": "FunctionDefinition", "src": "20923:152:0", "nodes": [], "body": { "id": 1698, "nodeType": "Block", "src": "21013:62:0", "nodes": [], "statements": [ { "expression": { "expression": { "expression": { "id": 1694, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "21030:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1695, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "21036:5:0", "memberName": "state", "nodeType": "MemberAccess", "referencedDeclaration": 3847, "src": "21030:11:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolState_$3823_storage", "typeString": "struct StakingPoolLib.PoolState storage ref" } }, "id": 1696, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "21042:26:0", "memberName": "totalCommunityStakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3820, "src": "21030:38:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "functionReturnParameters": 1693, "id": 1697, "nodeType": "Return", "src": "21023:45:0" } ] }, "baseFunctions": [ 2899 ], "documentation": { "id": 1687, "nodeType": "StructuredDocumentation", "src": "20894:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "049b2ca0", "implemented": true, "kind": "function", "modifiers": [], "name": "getTotalCommunityStakedAmount", "nameLocation": "20932:29:0", "overrides": { "id": 1690, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1689, "name": "IStaking", "nameLocations": [ "20985:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "20985:8:0" } ], "src": "20976:18:0" }, "parameters": { "id": 1688, "nodeType": "ParameterList", "parameters": [], "src": "20961:2:0" }, "returnParameters": { "id": 1693, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1692, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "21004:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1691, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21004:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "21003:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 1711, "nodeType": "FunctionDefinition", "src": "21110:130:0", "nodes": [], "body": { "id": 1710, "nodeType": "Block", "src": "21193:47:0", "nodes": [], "statements": [ { "expression": { "expression": { "id": 1707, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "21210:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1708, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "21216:17:0", "memberName": "totalFrozenAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3852, "src": "21210:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1706, "id": 1709, "nodeType": "Return", "src": "21203:30:0" } ] }, "baseFunctions": [ 2905 ], "documentation": { "id": 1700, "nodeType": "StructuredDocumentation", "src": "21081:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "e9f37cdf", "implemented": true, "kind": "function", "modifiers": [], "name": "getTotalFrozenAmount", "nameLocation": "21119:20:0", "overrides": { "id": 1703, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1702, "name": "IStaking", "nameLocations": [ "21165:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "21165:8:0" } ], "src": "21156:18:0" }, "parameters": { "id": 1701, "nodeType": "ParameterList", "parameters": [], "src": "21139:2:0" }, "returnParameters": { "id": 1706, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1705, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1711, "src": "21184:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1704, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21184:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "21183:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1787, "nodeType": "FunctionDefinition", "src": "21275:618:0", "nodes": [], "body": { "id": 1786, "nodeType": "Block", "src": "21457:436:0", "nodes": [], "statements": [ { "assignments": [ 1730 ], "declarations": [ { "constant": false, "id": 1730, "mutability": "mutable", "name": "frozenPrincipals", "nameLocation": "21507:16:0", "nodeType": "VariableDeclaration", "scope": 1786, "src": "21467:56:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_memory_ptr_$dyn_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal[]" }, "typeName": { "baseType": { "id": 1728, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 1727, "name": "StakingPoolLib.FrozenPrincipal", "nameLocations": [ "21467:14:0", "21482:15:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3828, "src": "21467:30:0" }, "referencedDeclaration": 3828, "src": "21467:30:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal" } }, "id": 1729, "nodeType": "ArrayTypeName", "src": "21467:32:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal[]" } }, "visibility": "internal" } ], "id": 1736, "initialValue": { "expression": { "baseExpression": { "expression": { "id": 1731, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "21526:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1732, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "21532:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "21526:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 1734, "indexExpression": { "id": 1733, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1714, "src": "21540:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "21526:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 1735, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "21548:16:0", "memberName": "frozenPrincipals", "nodeType": "MemberAccess", "referencedDeclaration": 3836, "src": "21526:38:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "21467:97:0" }, { "expression": { "id": 1744, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 1737, "name": "amounts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1720, "src": "21574:7:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint96_$dyn_memory_ptr", "typeString": "uint96[] memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "id": 1741, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1730, "src": "21597:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_memory_ptr_$dyn_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory[] memory" } }, "id": 1742, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "21614:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "21597:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1740, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "21584:12:0", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint96_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint96[] memory)" }, "typeName": { "baseType": { "id": 1738, "name": "uint96", "nodeType": "ElementaryTypeName", "src": "21588:6:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 1739, "nodeType": "ArrayTypeName", "src": "21588:8:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint96_$dyn_storage_ptr", "typeString": "uint96[]" } } }, "id": 1743, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "21584:37:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint96_$dyn_memory_ptr", "typeString": "uint96[] memory" } }, "src": "21574:47:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint96_$dyn_memory_ptr", "typeString": "uint96[] memory" } }, "id": 1745, "nodeType": "ExpressionStatement", "src": "21574:47:0" }, { "expression": { "id": 1753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 1746, "name": "unlockTimestamps", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1723, "src": "21631:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "id": 1750, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1730, "src": "21664:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_memory_ptr_$dyn_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory[] memory" } }, "id": 1751, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "21681:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "21664:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1749, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "21650:13:0", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint256[] memory)" }, "typeName": { "baseType": { "id": 1747, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21654:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1748, "nodeType": "ArrayTypeName", "src": "21654:9:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" } } }, "id": 1752, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "21650:38:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, "src": "21631:57:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, "id": 1754, "nodeType": "ExpressionStatement", "src": "21631:57:0" }, { "body": { "id": 1784, "nodeType": "Block", "src": "21752:135:0", "statements": [ { "expression": { "id": 1773, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 1766, "name": "amounts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1720, "src": "21766:7:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint96_$dyn_memory_ptr", "typeString": "uint96[] memory" } }, "id": 1768, "indexExpression": { "id": 1767, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "21774:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "21766:10:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "baseExpression": { "id": 1769, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1730, "src": "21779:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_memory_ptr_$dyn_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory[] memory" } }, "id": 1771, "indexExpression": { "id": 1770, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "21796:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "21779:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory" } }, "id": 1772, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "21799:6:0", "memberName": "amount", "nodeType": "MemberAccess", "referencedDeclaration": 3825, "src": "21779:26:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "21766:39:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 1774, "nodeType": "ExpressionStatement", "src": "21766:39:0" }, { "expression": { "id": 1782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 1775, "name": "unlockTimestamps", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1723, "src": "21819:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, "id": 1777, "indexExpression": { "id": 1776, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "21836:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "21819:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "baseExpression": { "id": 1778, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1730, "src": "21841:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_memory_ptr_$dyn_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory[] memory" } }, "id": 1780, "indexExpression": { "id": 1779, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "21858:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "21841:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory" } }, "id": 1781, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "21861:15:0", "memberName": "unlockTimestamp", "nodeType": "MemberAccess", "referencedDeclaration": 3827, "src": "21841:35:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "21819:57:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1783, "nodeType": "ExpressionStatement", "src": "21819:57:0" } ] }, "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1762, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1759, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "21718:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "expression": { "id": 1760, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1730, "src": "21722:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_memory_ptr_$dyn_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory[] memory" } }, "id": 1761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "21739:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "21722:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "21718:27:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1785, "initializationExpression": { "assignments": [ 1756 ], "declarations": [ { "constant": false, "id": 1756, "mutability": "mutable", "name": "i", "nameLocation": "21711:1:0", "nodeType": "VariableDeclaration", "scope": 1785, "src": "21703:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1755, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21703:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1758, "initialValue": { "hexValue": "30", "id": 1757, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "21715:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "21703:13:0" }, "loopExpression": { "expression": { "id": 1764, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "21747:3:0", "subExpression": { "id": 1763, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "21747:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1765, "nodeType": "ExpressionStatement", "src": "21747:3:0" }, "nodeType": "ForStatement", "src": "21698:189:0" } ] }, "baseFunctions": [ 2917 ], "documentation": { "id": 1712, "nodeType": "StructuredDocumentation", "src": "21246:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "fa4934e7", "implemented": true, "kind": "function", "modifiers": [], "name": "getFrozenPrincipal", "nameLocation": "21284:18:0", "overrides": { "id": 1717, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1716, "name": "IStaking", "nameLocations": [ "21366:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "21366:8:0" } ], "src": "21357:18:0" }, "parameters": { "id": 1715, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1714, "mutability": "mutable", "name": "staker", "nameLocation": "21311:6:0", "nodeType": "VariableDeclaration", "scope": 1787, "src": "21303:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1713, "name": "address", "nodeType": "ElementaryTypeName", "src": "21303:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "21302:16:0" }, "returnParameters": { "id": 1724, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1720, "mutability": "mutable", "name": "amounts", "nameLocation": "21409:7:0", "nodeType": "VariableDeclaration", "scope": 1787, "src": "21393:23:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint96_$dyn_memory_ptr", "typeString": "uint96[]" }, "typeName": { "baseType": { "id": 1718, "name": "uint96", "nodeType": "ElementaryTypeName", "src": "21393:6:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 1719, "nodeType": "ArrayTypeName", "src": "21393:8:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint96_$dyn_storage_ptr", "typeString": "uint96[]" } }, "visibility": "internal" }, { "constant": false, "id": 1723, "mutability": "mutable", "name": "unlockTimestamps", "nameLocation": "21435:16:0", "nodeType": "VariableDeclaration", "scope": 1787, "src": "21418:33:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]" }, "typeName": { "baseType": { "id": 1721, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21418:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1722, "nodeType": "ArrayTypeName", "src": "21418:9:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" } }, "visibility": "internal" } ], "src": "21392:60:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1854, "nodeType": "FunctionDefinition", "src": "21928:625:0", "nodes": [], "body": { "id": 1853, "nodeType": "Block", "src": "22024:529:0", "nodes": [], "statements": [ { "assignments": [ 1800 ], "declarations": [ { "constant": false, "id": 1800, "mutability": "mutable", "name": "frozenPrincipals", "nameLocation": "22075:16:0", "nodeType": "VariableDeclaration", "scope": 1853, "src": "22034:57:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal[]" }, "typeName": { "baseType": { "id": 1798, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 1797, "name": "StakingPoolLib.FrozenPrincipal", "nameLocations": [ "22034:14:0", "22049:15:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3828, "src": "22034:30:0" }, "referencedDeclaration": 3828, "src": "22034:30:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal" } }, "id": 1799, "nodeType": "ArrayTypeName", "src": "22034:32:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal[]" } }, "visibility": "internal" } ], "id": 1807, "initialValue": { "expression": { "baseExpression": { "expression": { "id": 1801, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "22094:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1802, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "22100:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "22094:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 1805, "indexExpression": { "expression": { "id": 1803, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "22108:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "22112:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "22108:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "22094:25:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 1806, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "22120:16:0", "memberName": "frozenPrincipals", "nodeType": "MemberAccess", "referencedDeclaration": 3836, "src": "22094:42:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "22034:102:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 1808, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1800, "src": "22150:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "22167:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "22150:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 1810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "22177:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "22150:28:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1814, "nodeType": "IfStatement", "src": "22146:42:0", "trueBody": { "expression": { "hexValue": "30", "id": 1812, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "22187:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "functionReturnParameters": 1794, "id": 1813, "nodeType": "Return", "src": "22180:8:0" } }, { "body": { "id": 1851, "nodeType": "Block", "src": "22253:294:0", "statements": [ { "assignments": [ 1830 ], "declarations": [ { "constant": false, "id": 1830, "mutability": "mutable", "name": "frozenPrincipal", "nameLocation": "22306:15:0", "nodeType": "VariableDeclaration", "scope": 1851, "src": "22267:54:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal" }, "typeName": { "id": 1829, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 1828, "name": "StakingPoolLib.FrozenPrincipal", "nameLocations": [ "22267:14:0", "22282:15:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3828, "src": "22267:30:0" }, "referencedDeclaration": 3828, "src": "22267:30:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal" } }, "visibility": "internal" } ], "id": 1834, "initialValue": { "baseExpression": { "id": 1831, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1800, "src": "22324:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1833, "indexExpression": { "id": 1832, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1816, "src": "22341:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "22324:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "22267:76:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "baseExpression": { "id": 1835, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1800, "src": "22361:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1837, "indexExpression": { "id": 1836, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1816, "src": "22378:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "22361:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref" } }, "id": 1838, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "22381:15:0", "memberName": "unlockTimestamp", "nodeType": "MemberAccess", "referencedDeclaration": 3827, "src": "22361:35:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "expression": { "id": 1839, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "22400:5:0", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 1840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "22406:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "22400:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "22361:54:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1849, "nodeType": "Block", "src": "22499:38:0", "statements": [ { "id": 1848, "nodeType": "Break", "src": "22517:5:0" } ] }, "id": 1850, "nodeType": "IfStatement", "src": "22357:180:0", "trueBody": { "id": 1847, "nodeType": "Block", "src": "22417:76:0", "statements": [ { "expression": { "id": 1845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 1842, "name": "claimingPrincipal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1793, "src": "22435:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "expression": { "id": 1843, "name": "frozenPrincipal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1830, "src": "22456:15:0", "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage pointer" } }, "id": 1844, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "22472:6:0", "memberName": "amount", "nodeType": "MemberAccess", "referencedDeclaration": 3825, "src": "22456:22:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "22435:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1846, "nodeType": "ExpressionStatement", "src": "22435:43:0" } ] } } ] }, "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1822, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1819, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1816, "src": "22219:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "expression": { "id": 1820, "name": "frozenPrincipals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1800, "src": "22223:16:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer" } }, "id": 1821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "22240:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "22223:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "22219:27:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1852, "initializationExpression": { "assignments": [ 1816 ], "declarations": [ { "constant": false, "id": 1816, "mutability": "mutable", "name": "i", "nameLocation": "22212:1:0", "nodeType": "VariableDeclaration", "scope": 1852, "src": "22204:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1815, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "22204:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1818, "initialValue": { "hexValue": "30", "id": 1817, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "22216:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "22204:13:0" }, "loopExpression": { "expression": { "id": 1824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "22248:3:0", "subExpression": { "id": 1823, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1816, "src": "22248:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1825, "nodeType": "ExpressionStatement", "src": "22248:3:0" }, "nodeType": "ForStatement", "src": "22199:348:0" } ] }, "baseFunctions": [ 2925 ], "documentation": { "id": 1788, "nodeType": "StructuredDocumentation", "src": "21899:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "3ff08985", "implemented": true, "kind": "function", "modifiers": [], "name": "getClaimablePrincipalAmount", "nameLocation": "21937:27:0", "parameters": { "id": 1791, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1790, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1854, "src": "21965:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1789, "name": "address", "nodeType": "ElementaryTypeName", "src": "21965:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "21964:9:0" }, "returnParameters": { "id": 1794, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1793, "mutability": "mutable", "name": "claimingPrincipal", "nameLocation": "22005:17:0", "nodeType": "VariableDeclaration", "scope": 1854, "src": "21997:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1792, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "21997:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "21996:27:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 1868, "nodeType": "FunctionDefinition", "src": "22588:111:0", "nodes": [], "body": { "id": 1867, "nodeType": "Block", "src": "22661:38:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "id": 1864, "name": "_arpa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "22686:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20_$33394", "typeString": "contract IERC20" } ], "id": 1863, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "22678:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1862, "name": "address", "nodeType": "ElementaryTypeName", "src": "22678:7:0", "typeDescriptions": {} } }, "id": 1865, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "22678:14:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 1861, "id": 1866, "nodeType": "Return", "src": "22671:21:0" } ] }, "baseFunctions": [ 2785 ], "documentation": { "id": 1855, "nodeType": "StructuredDocumentation", "src": "22559:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "d174e658", "implemented": true, "kind": "function", "modifiers": [], "name": "getArpaToken", "nameLocation": "22597:12:0", "overrides": { "id": 1858, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1857, "name": "IStaking", "nameLocations": [ "22633:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "22633:8:0" } ], "src": "22624:18:0" }, "parameters": { "id": 1856, "nodeType": "ParameterList", "parameters": [], "src": "22609:2:0" }, "returnParameters": { "id": 1861, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1860, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1868, "src": "22652:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1859, "name": "address", "nodeType": "ElementaryTypeName", "src": "22652:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "22651:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 1879, "nodeType": "FunctionDefinition", "src": "22734:111:0", "nodes": [], "body": { "id": 1878, "nodeType": "Block", "src": "22810:35:0", "nodes": [], "statements": [ { "expression": { "id": 1876, "name": "_controller", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 99, "src": "22827:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 1875, "id": 1877, "nodeType": "Return", "src": "22820:18:0" } ] }, "baseFunctions": [ 2931 ], "documentation": { "id": 1869, "nodeType": "StructuredDocumentation", "src": "22705:24:0", "text": "@inheritdoc IStaking" }, "functionSelector": "3018205f", "implemented": true, "kind": "function", "modifiers": [], "name": "getController", "nameLocation": "22743:13:0", "overrides": { "id": 1872, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 1871, "name": "IStaking", "nameLocations": [ "22782:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "22782:8:0" } ], "src": "22773:18:0" }, "parameters": { "id": 1870, "nodeType": "ParameterList", "parameters": [], "src": "22756:2:0" }, "returnParameters": { "id": 1875, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1874, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1879, "src": "22801:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1873, "name": "address", "nodeType": "ElementaryTypeName", "src": "22801:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "22800:9:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 2034, "nodeType": "FunctionDefinition", "src": "23068:1895:0", "nodes": [], "body": { "id": 2033, "nodeType": "Block", "src": "23153:1810:0", "nodes": [], "statements": [ { "assignments": [ 1890 ], "declarations": [ { "constant": false, "id": 1890, "mutability": "mutable", "name": "currentStakedAmount", "nameLocation": "23171:19:0", "nodeType": "VariableDeclaration", "scope": 2033, "src": "23163:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1889, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "23163:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1896, "initialValue": { "expression": { "baseExpression": { "expression": { "id": 1891, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "23193:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1892, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "23199:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "23193:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 1894, "indexExpression": { "id": 1893, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1882, "src": "23207:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "23193:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 1895, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "23215:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "23193:34:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "VariableDeclarationStatement", "src": "23163:64:0" }, { "assignments": [ 1898 ], "declarations": [ { "constant": false, "id": 1898, "mutability": "mutable", "name": "newStakedAmount", "nameLocation": "23245:15:0", "nodeType": "VariableDeclaration", "scope": 2033, "src": "23237:23:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1897, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "23237:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1902, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1899, "name": "currentStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1890, "src": "23263:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 1900, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1884, "src": "23285:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "23263:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "23237:54:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1905, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1903, "name": "newStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1898, "src": "23387:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 1904, "name": "_minCommunityStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, "src": "23405:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "23387:42:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1913, "nodeType": "IfStatement", "src": "23383:144:0", "trueBody": { "id": 1912, "nodeType": "Block", "src": "23431:96:0", "statements": [ { "errorCall": { "arguments": [ { "id": 1909, "name": "_minCommunityStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, "src": "23491:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1906, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "23452:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 1908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "23467:23:0", "memberName": "InsufficientStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3749, "src": "23452:38:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 1910, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "23452:64:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1911, "nodeType": "RevertStatement", "src": "23445:71:0" } ] } }, { "assignments": [ 1915 ], "declarations": [ { "constant": false, "id": 1915, "mutability": "mutable", "name": "maxCommunityStakeAmount", "nameLocation": "23623:23:0", "nodeType": "VariableDeclaration", "scope": 2033, "src": "23615:31:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1914, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "23615:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1922, "initialValue": { "arguments": [ { "expression": { "expression": { "id": 1918, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "23657:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1919, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "23663:6:0", "memberName": "limits", "nodeType": "MemberAccess", "referencedDeclaration": 3850, "src": "23657:12:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolLimits_$3814_storage", "typeString": "struct StakingPoolLib.PoolLimits storage ref" } }, "id": 1920, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "23670:23:0", "memberName": "maxCommunityStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3813, "src": "23657:36:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" } ], "id": 1917, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "23649:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1916, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "23649:7:0", "typeDescriptions": {} } }, "id": 1921, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "23649:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "23615:79:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1925, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1923, "name": "newStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1898, "src": "23708:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "id": 1924, "name": "maxCommunityStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1915, "src": "23726:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "23708:41:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1935, "nodeType": "IfStatement", "src": "23704:161:0", "trueBody": { "id": 1934, "nodeType": "Block", "src": "23751:114:0", "statements": [ { "errorCall": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1931, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1929, "name": "maxCommunityStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1915, "src": "23808:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 1930, "name": "currentStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1890, "src": "23834:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "23808:45:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1926, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "23772:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 1928, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "23787:20:0", "memberName": "ExcessiveStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3754, "src": "23772:35:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 1932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "23772:82:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1933, "nodeType": "RevertStatement", "src": "23765:89:0" } ] } }, { "assignments": [ 1937 ], "declarations": [ { "constant": false, "id": 1937, "mutability": "mutable", "name": "remainingPoolSpace", "nameLocation": "23996:18:0", "nodeType": "VariableDeclaration", "scope": 2033, "src": "23988:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1936, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "23988:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1941, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 1938, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "24017:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 1939, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "24023:22:0", "memberName": "_getRemainingPoolSpace", "nodeType": "MemberAccess", "referencedDeclaration": 4046, "src": "24017:28:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Pool_$3853_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Pool_$3853_storage_ptr_$", "typeString": "function (struct StakingPoolLib.Pool storage pointer) view returns (uint256)" } }, "id": 1940, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24017:30:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "23988:59:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1942, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1884, "src": "24061:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "id": 1943, "name": "remainingPoolSpace", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1937, "src": "24070:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "24061:27:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1952, "nodeType": "IfStatement", "src": "24057:120:0", "trueBody": { "id": 1951, "nodeType": "Block", "src": "24090:87:0", "statements": [ { "errorCall": { "arguments": [ { "id": 1948, "name": "remainingPoolSpace", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1937, "src": "24147:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1945, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "24111:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 1947, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "24126:20:0", "memberName": "ExcessiveStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3754, "src": "24111:35:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 1949, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24111:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1950, "nodeType": "RevertStatement", "src": "24104:62:0" } ] } }, { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 1956, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "24218:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24218:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1953, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "24187:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1955, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "24195:22:0", "memberName": "_accumulateBaseRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3203, "src": "24187:30:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256)" } }, "id": 1958, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24187:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1959, "nodeType": "ExpressionStatement", "src": "24187:63:0" }, { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 1963, "name": "getTotalDelegatedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1644, "src": "24297:23:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1964, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24297:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 1965, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "24324:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1966, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24324:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1960, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "24260:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1962, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "24268:28:0", "memberName": "_accumulateDelegationRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3241, "src": "24260:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256)" } }, "id": 1967, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24260:96:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1968, "nodeType": "ExpressionStatement", "src": "24260:96:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1971, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 1969, "name": "currentStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1890, "src": "24397:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 1970, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "24420:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "24397:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1981, "nodeType": "IfStatement", "src": "24393:94:0", "trueBody": { "id": 1980, "nodeType": "Block", "src": "24423:64:0", "statements": [ { "expression": { "id": 1978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "expression": { "id": 1972, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "24437:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1975, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "24445:4:0", "memberName": "base", "nodeType": "MemberAccess", "referencedDeclaration": 3087, "src": "24437:12:0", "typeDescriptions": { "typeIdentifier": "t_struct$_BaseRewards_$3071_storage", "typeString": "struct RewardLib.BaseRewards storage ref" } }, "id": 1976, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "24450:21:0", "memberName": "communityStakersCount", "nodeType": "MemberAccess", "referencedDeclaration": 3066, "src": "24437:34:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "hexValue": "31", "id": 1977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "24475:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "24437:39:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 1979, "nodeType": "ExpressionStatement", "src": "24437:39:0" } ] } }, { "assignments": [ 1983 ], "declarations": [ { "constant": false, "id": 1983, "mutability": "mutable", "name": "extraNonDelegatedAmount", "nameLocation": "24505:23:0", "nodeType": "VariableDeclaration", "scope": 2033, "src": "24497:31:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1982, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "24497:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 1989, "initialValue": { "arguments": [ { "id": 1986, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1884, "src": "24564:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 1987, "name": "_delegationRateDenominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "24572:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1984, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "24531:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 1985, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "24541:22:0", "memberName": "_getNonDelegatedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3463, "src": "24531:32:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1988, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24531:68:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "24497:102:0" }, { "expression": { "id": 2004, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "baseExpression": { "expression": { "id": 1990, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "24609:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1993, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "24617:6:0", "memberName": "missed", "nodeType": "MemberAccess", "referencedDeclaration": 3081, "src": "24609:14:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MissedRewards_$3076_storage_$", "typeString": "mapping(address => struct RewardLib.MissedRewards storage ref)" } }, "id": 1994, "indexExpression": { "id": 1992, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1882, "src": "24624:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "24609:22:0", "typeDescriptions": { "typeIdentifier": "t_struct$_MissedRewards_$3076_storage", "typeString": "struct RewardLib.MissedRewards storage ref" } }, "id": 1995, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "24632:4:0", "memberName": "base", "nodeType": "MemberAccess", "referencedDeclaration": 3073, "src": "24609:27:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "arguments": [ { "id": 1998, "name": "extraNonDelegatedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1983, "src": "24689:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 1999, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "24714:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2000, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24714:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 1996, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "24652:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 1997, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "24660:28:0", "memberName": "_calculateAccruedBaseRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3430, "src": "24652:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256) view returns (uint256)" } }, "id": 2001, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24652:94:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2002, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "24747:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "24652:104:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2003, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24652:106:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "24609:149:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2005, "nodeType": "ExpressionStatement", "src": "24609:149:0" }, { "expression": { "id": 2014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "expression": { "id": 2006, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "24768:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2009, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "24774:5:0", "memberName": "state", "nodeType": "MemberAccess", "referencedDeclaration": 3847, "src": "24768:11:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolState_$3823_storage", "typeString": "struct StakingPoolLib.PoolState storage ref" } }, "id": 2010, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "24780:26:0", "memberName": "totalCommunityStakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3820, "src": "24768:38:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2011, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1884, "src": "24810:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "24817:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "24810:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2013, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24810:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "24768:60:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2015, "nodeType": "ExpressionStatement", "src": "24768:60:0" }, { "expression": { "id": 2025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "baseExpression": { "expression": { "id": 2016, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "24838:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2019, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "24844:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "24838:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2020, "indexExpression": { "id": 2018, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1882, "src": "24852:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "24838:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 2021, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "24860:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "24838:34:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2022, "name": "newStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1898, "src": "24875:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "24891:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "24875:25:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2024, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24875:27:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "24838:64:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2026, "nodeType": "ExpressionStatement", "src": "24838:64:0" }, { "eventCall": { "arguments": [ { "id": 2028, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1882, "src": "24924:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2029, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1884, "src": "24932:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2030, "name": "newStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1898, "src": "24940:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2027, "name": "Staked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2721, "src": "24917:6:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256)" } }, "id": 2031, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "24917:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2032, "nodeType": "EmitStatement", "src": "24912:44:0" } ] }, "documentation": { "id": 1880, "nodeType": "StructuredDocumentation", "src": "22898:165:0", "text": "@notice Helper function for when a community staker enters the pool\n @param staker The staker address\n @param amount The amount of principal staked" }, "implemented": true, "kind": "function", "modifiers": [ { "id": 1887, "kind": "modifierInvocation", "modifierName": { "id": 1886, "name": "whenActive", "nameLocations": [ "23142:10:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2553, "src": "23142:10:0" }, "nodeType": "ModifierInvocation", "src": "23142:10:0" } ], "name": "_stakeAsCommunityStaker", "nameLocation": "23077:23:0", "parameters": { "id": 1885, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1882, "mutability": "mutable", "name": "staker", "nameLocation": "23109:6:0", "nodeType": "VariableDeclaration", "scope": 2034, "src": "23101:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1881, "name": "address", "nodeType": "ElementaryTypeName", "src": "23101:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 1884, "mutability": "mutable", "name": "amount", "nameLocation": "23125:6:0", "nodeType": "VariableDeclaration", "scope": 2034, "src": "23117:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1883, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "23117:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "23100:32:0" }, "returnParameters": { "id": 1888, "nodeType": "ParameterList", "parameters": [], "src": "23153:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "id": 2166, "nodeType": "FunctionDefinition", "src": "25132:1523:0", "nodes": [], "body": { "id": 2165, "nodeType": "Block", "src": "25199:1456:0", "nodes": [], "statements": [ { "assignments": [ 2046 ], "declarations": [ { "constant": false, "id": 2046, "mutability": "mutable", "name": "operator", "nameLocation": "25239:8:0", "nodeType": "VariableDeclaration", "scope": 2165, "src": "25209:38:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" }, "typeName": { "id": 2045, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 2044, "name": "StakingPoolLib.Staker", "nameLocations": [ "25209:14:0", "25224:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3839, "src": "25209:21:0" }, "referencedDeclaration": 3839, "src": "25209:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" } }, "visibility": "internal" } ], "id": 2051, "initialValue": { "baseExpression": { "expression": { "id": 2047, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "25250:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2048, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "25256:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "25250:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2050, "indexExpression": { "id": 2049, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2037, "src": "25264:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "25250:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "25209:62:0" }, { "assignments": [ 2053 ], "declarations": [ { "constant": false, "id": 2053, "mutability": "mutable", "name": "currentStakedAmount", "nameLocation": "25289:19:0", "nodeType": "VariableDeclaration", "scope": 2165, "src": "25281:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2052, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "25281:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2056, "initialValue": { "expression": { "id": 2054, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2046, "src": "25311:8:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker storage pointer" } }, "id": 2055, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "25320:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "25311:21:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "VariableDeclarationStatement", "src": "25281:51:0" }, { "assignments": [ 2058 ], "declarations": [ { "constant": false, "id": 2058, "mutability": "mutable", "name": "newStakedAmount", "nameLocation": "25350:15:0", "nodeType": "VariableDeclaration", "scope": 2165, "src": "25342:23:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2057, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "25342:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2062, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2059, "name": "currentStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2053, "src": "25368:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 2060, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2039, "src": "25390:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "25368:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "25342:54:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2065, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2063, "name": "newStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2058, "src": "25486:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 2064, "name": "_operatorStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "25504:20:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "25486:38:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2073, "nodeType": "IfStatement", "src": "25482:136:0", "trueBody": { "id": 2072, "nodeType": "Block", "src": "25526:92:0", "statements": [ { "errorCall": { "arguments": [ { "id": 2069, "name": "_operatorStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "25586:20:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2066, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "25547:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "25562:23:0", "memberName": "InsufficientStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3749, "src": "25547:38:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 2070, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "25547:60:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2071, "nodeType": "RevertStatement", "src": "25540:67:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2074, "name": "newStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2058, "src": "25631:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "id": 2075, "name": "_operatorStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "25649:20:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "25631:38:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2086, "nodeType": "IfStatement", "src": "25627:151:0", "trueBody": { "id": 2085, "nodeType": "Block", "src": "25671:107:0", "statements": [ { "errorCall": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2082, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2080, "name": "newStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2058, "src": "25728:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 2081, "name": "_operatorStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "25746:20:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "25728:38:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2077, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "25692:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2079, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "25707:20:0", "memberName": "ExcessiveStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3754, "src": "25692:35:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 2083, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "25692:75:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2084, "nodeType": "RevertStatement", "src": "25685:82:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2089, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2087, "name": "currentStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2053, "src": "25818:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 2088, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "25841:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "25818:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2137, "nodeType": "IfStatement", "src": "25814:637:0", "trueBody": { "id": 2136, "nodeType": "Block", "src": "25844:607:0", "statements": [ { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 2093, "name": "getTotalDelegatedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1644, "src": "25895:23:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2094, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "25895:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 2095, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "25922:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2096, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "25922:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2090, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "25858:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2092, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "25866:28:0", "memberName": "_accumulateDelegationRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3241, "src": "25858:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256)" } }, "id": 2097, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "25858:96:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2098, "nodeType": "ExpressionStatement", "src": "25858:96:0" }, { "assignments": [ 2100 ], "declarations": [ { "constant": false, "id": 2100, "mutability": "mutable", "name": "delegatesCount", "nameLocation": "25974:14:0", "nodeType": "VariableDeclaration", "scope": 2136, "src": "25968:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 2099, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "25968:5:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "visibility": "internal" } ], "id": 2104, "initialValue": { "expression": { "expression": { "id": 2101, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "25991:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2102, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "25999:9:0", "memberName": "delegated", "nodeType": "MemberAccess", "referencedDeclaration": 3084, "src": "25991:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_DelegatedRewards_$3064_storage", "typeString": "struct RewardLib.DelegatedRewards storage ref" } }, "id": 2103, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "26009:14:0", "memberName": "delegatesCount", "nodeType": "MemberAccess", "referencedDeclaration": 3059, "src": "25991:32:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "25968:55:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 2107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2105, "name": "delegatesCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2100, "src": "26184:14:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 2106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "26202:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "26184:19:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2114, "nodeType": "IfStatement", "src": "26180:104:0", "trueBody": { "id": 2113, "nodeType": "Block", "src": "26205:79:0", "statements": [ { "expression": { "id": 2111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "26223:46:0", "subExpression": { "expression": { "expression": { "id": 2108, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "26230:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2109, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "26238:9:0", "memberName": "delegated", "nodeType": "MemberAccess", "referencedDeclaration": 3084, "src": "26230:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_DelegatedRewards_$3064_storage", "typeString": "struct RewardLib.DelegatedRewards storage ref" } }, "id": 2110, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "26248:21:0", "memberName": "cumulativePerDelegate", "nodeType": "MemberAccess", "referencedDeclaration": 3061, "src": "26230:39:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2112, "nodeType": "ExpressionStatement", "src": "26223:46:0" } ] } }, { "expression": { "id": 2123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "expression": { "id": 2115, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "26298:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2118, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "26306:9:0", "memberName": "delegated", "nodeType": "MemberAccess", "referencedDeclaration": 3084, "src": "26298:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_DelegatedRewards_$3064_storage", "typeString": "struct RewardLib.DelegatedRewards storage ref" } }, "id": 2119, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "26316:14:0", "memberName": "delegatesCount", "nodeType": "MemberAccess", "referencedDeclaration": 3059, "src": "26298:32:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 2122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2120, "name": "delegatesCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2100, "src": "26333:14:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "hexValue": "31", "id": 2121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "26350:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "26333:18:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "26298:53:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 2124, "nodeType": "ExpressionStatement", "src": "26298:53:0" }, { "expression": { "id": 2134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "baseExpression": { "expression": { "id": 2125, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "26366:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2128, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "26374:6:0", "memberName": "missed", "nodeType": "MemberAccess", "referencedDeclaration": 3081, "src": "26366:14:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MissedRewards_$3076_storage_$", "typeString": "mapping(address => struct RewardLib.MissedRewards storage ref)" } }, "id": 2129, "indexExpression": { "id": 2127, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2037, "src": "26381:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "26366:22:0", "typeDescriptions": { "typeIdentifier": "t_struct$_MissedRewards_$3076_storage", "typeString": "struct RewardLib.MissedRewards storage ref" } }, "id": 2130, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "26389:9:0", "memberName": "delegated", "nodeType": "MemberAccess", "referencedDeclaration": 3075, "src": "26366:32:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "expression": { "id": 2131, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "26401:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2132, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "26409:9:0", "memberName": "delegated", "nodeType": "MemberAccess", "referencedDeclaration": 3084, "src": "26401:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_DelegatedRewards_$3064_storage", "typeString": "struct RewardLib.DelegatedRewards storage ref" } }, "id": 2133, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "26419:21:0", "memberName": "cumulativePerDelegate", "nodeType": "MemberAccess", "referencedDeclaration": 3061, "src": "26401:39:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "26366:74:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2135, "nodeType": "ExpressionStatement", "src": "26366:74:0" } ] } }, { "expression": { "id": 2146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "expression": { "id": 2138, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "26461:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2141, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "26467:5:0", "memberName": "state", "nodeType": "MemberAccess", "referencedDeclaration": 3847, "src": "26461:11:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolState_$3823_storage", "typeString": "struct StakingPoolLib.PoolState storage ref" } }, "id": 2142, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "26473:25:0", "memberName": "totalOperatorStakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3822, "src": "26461:37:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2143, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2039, "src": "26502:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "26509:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "26502:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2145, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "26502:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "26461:59:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2147, "nodeType": "ExpressionStatement", "src": "26461:59:0" }, { "expression": { "id": 2157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "baseExpression": { "expression": { "id": 2148, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "26530:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2151, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "26536:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "26530:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2152, "indexExpression": { "id": 2150, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2037, "src": "26544:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "26530:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 2153, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "26552:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "26530:34:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2154, "name": "newStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2058, "src": "26567:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "26583:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "26567:25:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "26567:27:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "26530:64:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2158, "nodeType": "ExpressionStatement", "src": "26530:64:0" }, { "eventCall": { "arguments": [ { "id": 2160, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2037, "src": "26616:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2161, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2039, "src": "26624:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2162, "name": "newStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2058, "src": "26632:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2159, "name": "Staked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2721, "src": "26609:6:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256)" } }, "id": 2163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "26609:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2164, "nodeType": "EmitStatement", "src": "26604:44:0" } ] }, "documentation": { "id": 2035, "nodeType": "StructuredDocumentation", "src": "24969:158:0", "text": "@notice Helper function for when an operator enters the pool\n @param staker The staker address\n @param amount The amount of principal staked" }, "implemented": true, "kind": "function", "modifiers": [], "name": "_stakeAsOperator", "nameLocation": "25141:16:0", "parameters": { "id": 2040, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2037, "mutability": "mutable", "name": "staker", "nameLocation": "25166:6:0", "nodeType": "VariableDeclaration", "scope": 2166, "src": "25158:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2036, "name": "address", "nodeType": "ElementaryTypeName", "src": "25158:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 2039, "mutability": "mutable", "name": "amount", "nameLocation": "25182:6:0", "nodeType": "VariableDeclaration", "scope": 2166, "src": "25174:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2038, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "25174:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "25157:32:0" }, "returnParameters": { "id": 2041, "nodeType": "ParameterList", "parameters": [], "src": "25199:0:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "id": 2230, "nodeType": "FunctionDefinition", "src": "26761:583:0", "nodes": [], "body": { "id": 2229, "nodeType": "Block", "src": "26837:507:0", "nodes": [], "statements": [ { "assignments": [ 2182 ], "declarations": [ { "constant": false, "id": 2182, "mutability": "mutable", "name": "stakerAccount", "nameLocation": "26876:13:0", "nodeType": "VariableDeclaration", "scope": 2229, "src": "26847:42:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker" }, "typeName": { "id": 2181, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 2180, "name": "StakingPoolLib.Staker", "nameLocations": [ "26847:14:0", "26862:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3839, "src": "26847:21:0" }, "referencedDeclaration": 3839, "src": "26847:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" } }, "visibility": "internal" } ], "id": 2187, "initialValue": { "baseExpression": { "expression": { "id": 2183, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "26892:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2184, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "26898:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "26892:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2186, "indexExpression": { "id": 2185, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2169, "src": "26906:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "26892:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "26847:66:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint96", "typeString": "uint96" }, "id": 2191, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 2188, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2182, "src": "26927:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 2189, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "26941:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "26927:26:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 2190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "26957:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "26927:31:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2199, "nodeType": "IfStatement", "src": "26923:105:0", "trueBody": { "id": 2198, "nodeType": "Block", "src": "26960:68:0", "statements": [ { "errorCall": { "arguments": [ { "id": 2195, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2169, "src": "27010:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 2192, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "26981:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "26996:13:0", "memberName": "StakeNotFound", "nodeType": "MemberAccess", "referencedDeclaration": 3759, "src": "26981:28:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 2196, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "26981:36:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2197, "nodeType": "RevertStatement", "src": "26974:43:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint96", "typeString": "uint96" }, "id": 2203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 2200, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2182, "src": "27041:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 2201, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "27055:17:0", "memberName": "lockedStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3838, "src": "27041:31:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 2202, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "27075:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "27041:35:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2211, "nodeType": "IfStatement", "src": "27037:120:0", "trueBody": { "id": 2210, "nodeType": "Block", "src": "27078:79:0", "statements": [ { "errorCall": { "arguments": [ { "id": 2207, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2169, "src": "27139:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 2204, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "27099:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "27114:24:0", "memberName": "ExistingLockedStakeFound", "nodeType": "MemberAccess", "referencedDeclaration": 3809, "src": "27099:39:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 2208, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "27099:47:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2209, "nodeType": "RevertStatement", "src": "27092:54:0" } ] } }, { "assignments": [ 2213, 2215 ], "declarations": [ { "constant": false, "id": 2213, "mutability": "mutable", "name": "baseReward", "nameLocation": "27175:10:0", "nodeType": "VariableDeclaration", "scope": 2229, "src": "27167:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2212, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "27167:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2215, "mutability": "mutable", "name": "delegationReward", "nameLocation": "27195:16:0", "nodeType": "VariableDeclaration", "scope": 2229, "src": "27187:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2214, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "27187:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2222, "initialValue": { "arguments": [ { "id": 2217, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2169, "src": "27221:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "expression": { "id": 2218, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2182, "src": "27229:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 2219, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "27243:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "27229:26:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, { "hexValue": "74727565", "id": 2220, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "27257:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint96", "typeString": "uint96" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 2216, "name": "_exit", "nodeType": "Identifier", "overloadedDeclarations": [ 2230, 2529 ], "referencedDeclaration": 2529, "src": "27215:5:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (address,uint256,bool) returns (uint256,uint256)" } }, "id": 2221, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "27215:47:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256)" } }, "nodeType": "VariableDeclarationStatement", "src": "27166:96:0" }, { "expression": { "components": [ { "expression": { "id": 2223, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2182, "src": "27280:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 2224, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "27294:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "27280:26:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, { "id": 2225, "name": "baseReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2213, "src": "27308:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2226, "name": "delegationReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2215, "src": "27320:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 2227, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "27279:58:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint96_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint96,uint256,uint256)" } }, "functionReturnParameters": 2177, "id": 2228, "nodeType": "Return", "src": "27272:65:0" } ] }, "documentation": { "id": 2167, "nodeType": "StructuredDocumentation", "src": "26661:95:0", "text": "@notice Helper function when staker exits the pool\n @param staker The staker address" }, "implemented": true, "kind": "function", "modifiers": [], "name": "_exit", "nameLocation": "26770:5:0", "parameters": { "id": 2170, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2169, "mutability": "mutable", "name": "staker", "nameLocation": "26784:6:0", "nodeType": "VariableDeclaration", "scope": 2230, "src": "26776:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2168, "name": "address", "nodeType": "ElementaryTypeName", "src": "26776:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "26775:16:0" }, "returnParameters": { "id": 2177, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2172, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2230, "src": "26810:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2171, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "26810:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2174, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2230, "src": "26819:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2173, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "26819:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2176, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2230, "src": "26828:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2175, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "26828:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "26809:27:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "id": 2529, "nodeType": "FunctionDefinition", "src": "27450:2943:0", "nodes": [], "body": { "id": 2528, "nodeType": "Block", "src": "27549:2844:0", "nodes": [], "statements": [ { "assignments": [ 2248 ], "declarations": [ { "constant": false, "id": 2248, "mutability": "mutable", "name": "stakerAccount", "nameLocation": "27588:13:0", "nodeType": "VariableDeclaration", "scope": 2528, "src": "27559:42:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker" }, "typeName": { "id": 2247, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 2246, "name": "StakingPoolLib.Staker", "nameLocations": [ "27559:14:0", "27574:6:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3839, "src": "27559:21:0" }, "referencedDeclaration": 3839, "src": "27559:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage_ptr", "typeString": "struct StakingPoolLib.Staker" } }, "visibility": "internal" } ], "id": 2253, "initialValue": { "baseExpression": { "expression": { "id": 2249, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "27604:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2250, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "27610:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "27604:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2252, "indexExpression": { "id": 2251, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "27618:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "27604:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "27559:66:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2254, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "27639:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 2255, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "27649:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "27639:11:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2264, "nodeType": "IfStatement", "src": "27635:93:0", "trueBody": { "id": 2263, "nodeType": "Block", "src": "27652:76:0", "statements": [ { "errorCall": { "arguments": [ { "id": 2260, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "27710:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 2257, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "27673:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2259, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "27688:21:0", "memberName": "UnstakeWithZeroAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3799, "src": "27673:36:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 2261, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "27673:44:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2262, "nodeType": "RevertStatement", "src": "27666:51:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 2265, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "27741:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 2266, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "27755:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "27741:26:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 2267, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "27770:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "27741:35:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2277, "nodeType": "IfStatement", "src": "27737:139:0", "trueBody": { "id": 2276, "nodeType": "Block", "src": "27778:98:0", "statements": [ { "errorCall": { "arguments": [ { "expression": { "id": 2272, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "27838:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 2273, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "27852:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "27838:26:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" } ], "expression": { "id": 2269, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "27799:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "27814:23:0", "memberName": "InadequateStakingAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3789, "src": "27799:38:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 2274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "27799:66:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2275, "nodeType": "RevertStatement", "src": "27792:73:0" } ] } }, { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 2281, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "27917:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2282, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "27917:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2278, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "27886:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2280, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "27894:22:0", "memberName": "_accumulateBaseRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3203, "src": "27886:30:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256)" } }, "id": 2283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "27886:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2284, "nodeType": "ExpressionStatement", "src": "27886:63:0" }, { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 2288, "name": "getTotalDelegatedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1644, "src": "27996:23:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2289, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "27996:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 2290, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "28023:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28023:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2285, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "27959:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2287, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "27967:28:0", "memberName": "_accumulateDelegationRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3241, "src": "27959:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$returns$__$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256)" } }, "id": 2292, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "27959:96:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2293, "nodeType": "ExpressionStatement", "src": "27959:96:0" }, { "condition": { "expression": { "id": 2294, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "28070:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 2295, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "28084:10:0", "memberName": "isOperator", "nodeType": "MemberAccess", "referencedDeclaration": 3830, "src": "28070:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 2526, "nodeType": "Block", "src": "29211:1176:0", "statements": [ { "assignments": [ 2407 ], "declarations": [ { "constant": false, "id": 2407, "mutability": "mutable", "name": "baseReward", "nameLocation": "29233:10:0", "nodeType": "VariableDeclaration", "scope": 2526, "src": "29225:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2406, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "29225:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2428, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "arguments": [ { "expression": { "id": 2412, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "29333:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 2413, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29347:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "29333:26:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, { "id": 2414, "name": "_delegationRateDenominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "29361:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2410, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "29300:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 2411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "29310:22:0", "memberName": "_getNonDelegatedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3463, "src": "29300:32:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 2415, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "29300:88:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 2416, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "29406:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2417, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "29406:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2408, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "29246:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2409, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29254:28:0", "memberName": "_calculateAccruedBaseRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3430, "src": "29246:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256) view returns (uint256)" } }, "id": 2418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "29246:205:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "arguments": [ { "expression": { "baseExpression": { "expression": { "id": 2421, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "29462:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2422, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29470:6:0", "memberName": "missed", "nodeType": "MemberAccess", "referencedDeclaration": 3081, "src": "29462:14:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MissedRewards_$3076_storage_$", "typeString": "mapping(address => struct RewardLib.MissedRewards storage ref)" } }, "id": 2424, "indexExpression": { "id": 2423, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "29477:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "29462:22:0", "typeDescriptions": { "typeIdentifier": "t_struct$_MissedRewards_$3076_storage", "typeString": "struct RewardLib.MissedRewards storage ref" } }, "id": 2425, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29485:4:0", "memberName": "base", "nodeType": "MemberAccess", "referencedDeclaration": 3073, "src": "29462:27:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" } ], "id": 2420, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "29454:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 2419, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "29454:7:0", "typeDescriptions": {} } }, "id": 2426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "29454:36:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "29246:244:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "29225:265:0" }, { "expression": { "id": 2437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "expression": { "id": 2429, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "29505:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2432, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29511:5:0", "memberName": "state", "nodeType": "MemberAccess", "referencedDeclaration": 3847, "src": "29505:11:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolState_$3823_storage", "typeString": "struct StakingPoolLib.PoolState storage ref" } }, "id": 2433, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "29517:26:0", "memberName": "totalCommunityStakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3820, "src": "29505:38:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2434, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "29547:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "29554:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "29547:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2436, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "29547:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "29505:60:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2438, "nodeType": "ExpressionStatement", "src": "29505:60:0" }, { "expression": { "id": 2448, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "baseExpression": { "expression": { "id": 2439, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "29579:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2442, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29585:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "29579:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2443, "indexExpression": { "id": 2441, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "29593:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "29579:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 2444, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "29601:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "29579:34:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2445, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "29617:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "29624:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "29617:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2447, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "29617:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "29579:56:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2449, "nodeType": "ExpressionStatement", "src": "29579:56:0" }, { "condition": { "commonType": { "typeIdentifier": "t_uint96", "typeString": "uint96" }, "id": 2456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "baseExpression": { "expression": { "id": 2450, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "29654:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2451, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29660:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "29654:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2453, "indexExpression": { "id": 2452, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "29668:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "29654:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 2454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29676:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "29654:34:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 2455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "29692:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "29654:39:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2466, "nodeType": "IfStatement", "src": "29650:117:0", "trueBody": { "id": 2465, "nodeType": "Block", "src": "29695:72:0", "statements": [ { "expression": { "id": 2463, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "expression": { "id": 2457, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "29713:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2460, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29721:4:0", "memberName": "base", "nodeType": "MemberAccess", "referencedDeclaration": 3087, "src": "29713:12:0", "typeDescriptions": { "typeIdentifier": "t_struct$_BaseRewards_$3071_storage", "typeString": "struct RewardLib.BaseRewards storage ref" } }, "id": 2461, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "29726:21:0", "memberName": "communityStakersCount", "nodeType": "MemberAccess", "referencedDeclaration": 3066, "src": "29713:34:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "hexValue": "31", "id": 2462, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "29751:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "29713:39:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 2464, "nodeType": "ExpressionStatement", "src": "29713:39:0" } ] } }, { "condition": { "id": 2468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "29785:10:0", "subExpression": { "id": 2467, "name": "isMigrate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2237, "src": "29786:9:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2497, "nodeType": "IfStatement", "src": "29781:289:0", "trueBody": { "id": 2496, "nodeType": "Block", "src": "29797:273:0", "statements": [ { "expression": { "id": 2475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "id": 2469, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "29815:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2471, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "29821:17:0", "memberName": "totalFrozenAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3852, "src": "29815:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2472, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "29842:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2473, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "29849:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "29842:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2474, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "29842:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "29815:45:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2476, "nodeType": "ExpressionStatement", "src": "29815:45:0" }, { "expression": { "arguments": [ { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2486, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "29974:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "29981:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "29974:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2488, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "29974:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 2489, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "29994:5:0", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 2490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "30000:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "29994:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 2491, "name": "_unstakeFreezingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 126, "src": "30012:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "29994:42:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2484, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "29943:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2485, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "29958:15:0", "memberName": "FrozenPrincipal", "nodeType": "MemberAccess", "referencedDeclaration": 3828, "src": "29943:30:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_FrozenPrincipal_$3828_storage_ptr_$", "typeString": "type(struct StakingPoolLib.FrozenPrincipal storage pointer)" } }, "id": 2493, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "29943:94:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory" } ], "expression": { "expression": { "baseExpression": { "expression": { "id": 2477, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "29878:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2480, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29884:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "29878:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2481, "indexExpression": { "id": 2479, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "29892:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "29878:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 2482, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29900:16:0", "memberName": "frozenPrincipals", "nodeType": "MemberAccess", "referencedDeclaration": 3836, "src": "29878:38:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage ref" } }, "id": 2483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "29917:4:0", "memberName": "push", "nodeType": "MemberAccess", "src": "29878:43:0", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr_$_t_struct$_FrozenPrincipal_$3828_storage_$returns$__$attached_to$_t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr_$", "typeString": "function (struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer,struct StakingPoolLib.FrozenPrincipal storage ref)" } }, "id": 2494, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "29878:177:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2495, "nodeType": "ExpressionStatement", "src": "29878:177:0" } ] } }, { "expression": { "id": 2520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "baseExpression": { "expression": { "id": 2498, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "30084:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "30092:6:0", "memberName": "missed", "nodeType": "MemberAccess", "referencedDeclaration": 3081, "src": "30084:14:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MissedRewards_$3076_storage_$", "typeString": "mapping(address => struct RewardLib.MissedRewards storage ref)" } }, "id": 2502, "indexExpression": { "id": 2500, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "30099:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "30084:22:0", "typeDescriptions": { "typeIdentifier": "t_struct$_MissedRewards_$3076_storage", "typeString": "struct RewardLib.MissedRewards storage ref" } }, "id": 2503, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "30107:4:0", "memberName": "base", "nodeType": "MemberAccess", "referencedDeclaration": 3073, "src": "30084:27:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "arguments": [ { "arguments": [ { "expression": { "baseExpression": { "expression": { "id": 2508, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "30201:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2509, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "30207:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "30201:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2511, "indexExpression": { "id": 2510, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "30215:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "30201:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 2512, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "30223:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "30201:34:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, { "id": 2513, "name": "_delegationRateDenominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "30237:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2506, "name": "RewardLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3585, "src": "30168:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RewardLib_$3585_$", "typeString": "type(library RewardLib)" } }, "id": 2507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "30178:22:0", "memberName": "_getNonDelegatedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3463, "src": "30168:32:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 2514, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "30168:96:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 2515, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "30282:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2516, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "30282:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2504, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "30114:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2505, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "30122:28:0", "memberName": "_calculateAccruedBaseRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3430, "src": "30114:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Reward_$3094_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,uint256,uint256) view returns (uint256)" } }, "id": 2517, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "30114:213:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "30328:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "30114:223:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "30114:225:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "30084:255:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2521, "nodeType": "ExpressionStatement", "src": "30084:255:0" }, { "expression": { "components": [ { "id": 2522, "name": "baseReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2407, "src": "30362:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "30", "id": 2523, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "30374:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "id": 2524, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "30361:15:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_rational_0_by_1_$", "typeString": "tuple(uint256,int_const 0)" } }, "functionReturnParameters": 2243, "id": 2525, "nodeType": "Return", "src": "30354:22:0" } ] }, "id": 2527, "nodeType": "IfStatement", "src": "28066:2321:0", "trueBody": { "id": 2405, "nodeType": "Block", "src": "28096:1109:0", "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2296, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "28114:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "id": 2297, "name": "_operatorStakeAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "28124:20:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "28114:30:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2306, "nodeType": "IfStatement", "src": "28110:131:0", "trueBody": { "id": 2305, "nodeType": "Block", "src": "28146:95:0", "statements": [ { "errorCall": { "arguments": [ { "id": 2302, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "28219:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 2299, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "28171:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2301, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "28186:32:0", "memberName": "UnstakeOperatorWithPartialAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3804, "src": "28171:47:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 2303, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28171:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2304, "nodeType": "RevertStatement", "src": "28164:62:0" } ] } }, { "condition": { "commonType": { "typeIdentifier": "t_uint96", "typeString": "uint96" }, "id": 2310, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 2307, "name": "stakerAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "28259:13:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_memory_ptr", "typeString": "struct StakingPoolLib.Staker memory" } }, "id": 2308, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "28273:17:0", "memberName": "lockedStakeAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3838, "src": "28259:31:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 2309, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "28293:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "28259:35:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2318, "nodeType": "IfStatement", "src": "28255:128:0", "trueBody": { "id": 2317, "nodeType": "Block", "src": "28296:87:0", "statements": [ { "errorCall": { "arguments": [ { "id": 2314, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "28361:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 2311, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "28321:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2313, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "28336:24:0", "memberName": "ExistingLockedStakeFound", "nodeType": "MemberAccess", "referencedDeclaration": 3809, "src": "28321:39:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 2315, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28321:47:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2316, "nodeType": "RevertStatement", "src": "28314:54:0" } ] } }, { "assignments": [ 2320 ], "declarations": [ { "constant": false, "id": 2320, "mutability": "mutable", "name": "delegationReward", "nameLocation": "28405:16:0", "nodeType": "VariableDeclaration", "scope": 2405, "src": "28397:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2319, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "28397:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2329, "initialValue": { "arguments": [ { "id": 2323, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "28484:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 2324, "name": "getTotalDelegatedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1644, "src": "28492:23:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2325, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28492:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 2326, "name": "getTotalCommunityStakedAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "28519:29:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28519:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2321, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "28424:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2322, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "28432:34:0", "memberName": "_getOperatorEarnedDelegatedRewards", "nodeType": "MemberAccess", "referencedDeclaration": 3563, "src": "28424:42:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Reward_$3094_storage_ptr_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_Reward_$3094_storage_ptr_$", "typeString": "function (struct RewardLib.Reward storage pointer,address,uint256,uint256) view returns (uint256)" } }, "id": 2328, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28424:140:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "28397:167:0" }, { "expression": { "id": 2338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "expression": { "id": 2330, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "28579:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2333, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "28585:5:0", "memberName": "state", "nodeType": "MemberAccess", "referencedDeclaration": 3847, "src": "28579:11:0", "typeDescriptions": { "typeIdentifier": "t_struct$_PoolState_$3823_storage", "typeString": "struct StakingPoolLib.PoolState storage ref" } }, "id": 2334, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "28591:25:0", "memberName": "totalOperatorStakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3822, "src": "28579:37:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2335, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "28620:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "28627:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "28620:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2337, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28620:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "28579:59:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2339, "nodeType": "ExpressionStatement", "src": "28579:59:0" }, { "expression": { "id": 2349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "baseExpression": { "expression": { "id": 2340, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "28652:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2343, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "28658:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "28652:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2344, "indexExpression": { "id": 2342, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "28666:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "28652:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 2345, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "28674:12:0", "memberName": "stakedAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3832, "src": "28652:34:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2346, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "28690:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2347, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "28697:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "28690:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2348, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28690:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "28652:56:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2350, "nodeType": "ExpressionStatement", "src": "28652:56:0" }, { "condition": { "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "28727:10:0", "subExpression": { "id": 2351, "name": "isMigrate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2237, "src": "28728:9:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2381, "nodeType": "IfStatement", "src": "28723:289:0", "trueBody": { "id": 2380, "nodeType": "Block", "src": "28739:273:0", "statements": [ { "expression": { "id": 2359, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "id": 2353, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "28757:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2355, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "28763:17:0", "memberName": "totalFrozenAmount", "nodeType": "MemberAccess", "referencedDeclaration": 3852, "src": "28757:23:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2356, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "28784:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "28791:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "28784:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2358, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28784:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "28757:45:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2360, "nodeType": "ExpressionStatement", "src": "28757:45:0" }, { "expression": { "arguments": [ { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2370, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "28916:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "28923:9:0", "memberName": "_toUint96", "nodeType": "MemberAccess", "referencedDeclaration": 3701, "src": "28916:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint96_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint96)" } }, "id": 2372, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28916:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 2373, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "28936:5:0", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 2374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "28942:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "28936:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 2375, "name": "_unstakeFreezingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 126, "src": "28954:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "28936:42:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint96", "typeString": "uint96" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2368, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "28885:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "28900:15:0", "memberName": "FrozenPrincipal", "nodeType": "MemberAccess", "referencedDeclaration": 3828, "src": "28885:30:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_FrozenPrincipal_$3828_storage_ptr_$", "typeString": "type(struct StakingPoolLib.FrozenPrincipal storage pointer)" } }, "id": 2377, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28885:94:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_FrozenPrincipal_$3828_memory_ptr", "typeString": "struct StakingPoolLib.FrozenPrincipal memory" } ], "expression": { "expression": { "baseExpression": { "expression": { "id": 2361, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "28820:5:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Pool_$3853_storage", "typeString": "struct StakingPoolLib.Pool storage ref" } }, "id": 2364, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "28826:7:0", "memberName": "stakers", "nodeType": "MemberAccess", "referencedDeclaration": 3844, "src": "28820:13:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$3839_storage_$", "typeString": "mapping(address => struct StakingPoolLib.Staker storage ref)" } }, "id": 2365, "indexExpression": { "id": 2363, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "28834:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "28820:21:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Staker_$3839_storage", "typeString": "struct StakingPoolLib.Staker storage ref" } }, "id": 2366, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "28842:16:0", "memberName": "frozenPrincipals", "nodeType": "MemberAccess", "referencedDeclaration": 3836, "src": "28820:38:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage", "typeString": "struct StakingPoolLib.FrozenPrincipal storage ref[] storage ref" } }, "id": 2367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "28859:4:0", "memberName": "push", "nodeType": "MemberAccess", "src": "28820:43:0", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr_$_t_struct$_FrozenPrincipal_$3828_storage_$returns$__$attached_to$_t_array$_t_struct$_FrozenPrincipal_$3828_storage_$dyn_storage_ptr_$", "typeString": "function (struct StakingPoolLib.FrozenPrincipal storage ref[] storage pointer,struct StakingPoolLib.FrozenPrincipal storage ref)" } }, "id": 2378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "28820:177:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2379, "nodeType": "ExpressionStatement", "src": "28820:177:0" } ] } }, { "expression": { "id": 2388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "expression": { "id": 2382, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "29025:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2385, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29033:9:0", "memberName": "delegated", "nodeType": "MemberAccess", "referencedDeclaration": 3084, "src": "29025:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_DelegatedRewards_$3064_storage", "typeString": "struct RewardLib.DelegatedRewards storage ref" } }, "id": 2386, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "29043:14:0", "memberName": "delegatesCount", "nodeType": "MemberAccess", "referencedDeclaration": 3059, "src": "29025:32:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "hexValue": "31", "id": 2387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "29061:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "29025:37:0", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 2389, "nodeType": "ExpressionStatement", "src": "29025:37:0" }, { "expression": { "id": 2399, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { "baseExpression": { "expression": { "id": 2390, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "29077:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2393, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29085:6:0", "memberName": "missed", "nodeType": "MemberAccess", "referencedDeclaration": 3081, "src": "29077:14:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MissedRewards_$3076_storage_$", "typeString": "mapping(address => struct RewardLib.MissedRewards storage ref)" } }, "id": 2394, "indexExpression": { "id": 2392, "name": "staker", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "29092:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "29077:22:0", "typeDescriptions": { "typeIdentifier": "t_struct$_MissedRewards_$3076_storage", "typeString": "struct RewardLib.MissedRewards storage ref" } }, "id": 2395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "29100:9:0", "memberName": "delegated", "nodeType": "MemberAccess", "referencedDeclaration": 3075, "src": "29077:32:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "expression": { "id": 2396, "name": "_reward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "29112:7:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Reward_$3094_storage", "typeString": "struct RewardLib.Reward storage ref" } }, "id": 2397, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29120:9:0", "memberName": "delegated", "nodeType": "MemberAccess", "referencedDeclaration": 3084, "src": "29112:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_DelegatedRewards_$3064_storage", "typeString": "struct RewardLib.DelegatedRewards storage ref" } }, "id": 2398, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "29130:21:0", "memberName": "cumulativePerDelegate", "nodeType": "MemberAccess", "referencedDeclaration": 3061, "src": "29112:39:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "src": "29077:74:0", "typeDescriptions": { "typeIdentifier": "t_uint96", "typeString": "uint96" } }, "id": 2400, "nodeType": "ExpressionStatement", "src": "29077:74:0" }, { "expression": { "components": [ { "hexValue": "30", "id": 2401, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "29174:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "id": 2402, "name": "delegationReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2320, "src": "29177:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 2403, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "29173:21:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint256_$", "typeString": "tuple(int_const 0,uint256)" } }, "functionReturnParameters": 2243, "id": 2404, "nodeType": "Return", "src": "29166:28:0" } ] } } ] }, "documentation": { "id": 2231, "nodeType": "StructuredDocumentation", "src": "27350:95:0", "text": "@notice Helper function when staker exits the pool\n @param staker The staker address" }, "implemented": true, "kind": "function", "modifiers": [], "name": "_exit", "nameLocation": "27459:5:0", "parameters": { "id": 2238, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2233, "mutability": "mutable", "name": "staker", "nameLocation": "27473:6:0", "nodeType": "VariableDeclaration", "scope": 2529, "src": "27465:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2232, "name": "address", "nodeType": "ElementaryTypeName", "src": "27465:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 2235, "mutability": "mutable", "name": "amount", "nameLocation": "27489:6:0", "nodeType": "VariableDeclaration", "scope": 2529, "src": "27481:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2234, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "27481:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2237, "mutability": "mutable", "name": "isMigrate", "nameLocation": "27502:9:0", "nodeType": "VariableDeclaration", "scope": 2529, "src": "27497:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 2236, "name": "bool", "nodeType": "ElementaryTypeName", "src": "27497:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "27464:48:0" }, "returnParameters": { "id": 2243, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2240, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2529, "src": "27531:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2239, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "27531:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2242, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2529, "src": "27540:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2241, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "27540:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "27530:18:0" }, "scope": 2582, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "id": 2545, "nodeType": "FunctionDefinition", "src": "30533:120:0", "nodes": [], "body": { "id": 2544, "nodeType": "Block", "src": "30567:86:0", "nodes": [], "statements": [ { "condition": { "id": 2535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "30581:11:0", "subExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 2533, "name": "isActive", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1412, "src": "30582:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, "id": 2534, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "30582:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2543, "nodeType": "IfStatement", "src": "30577:69:0", "trueBody": { "errorCall": { "arguments": [ { "hexValue": "66616c7365", "id": 2539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "30634:5:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "hexValue": "74727565", "id": 2540, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "30641:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "expression": { "id": 2536, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "30601:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "30616:17:0", "memberName": "InvalidPoolStatus", "nodeType": "MemberAccess", "referencedDeclaration": 3734, "src": "30601:32:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_bool_$_t_bool_$returns$__$", "typeString": "function (bool,bool) pure" } }, "id": 2541, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "30601:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2542, "nodeType": "RevertStatement", "src": "30594:52:0" } } ] }, "documentation": { "id": 2530, "nodeType": "StructuredDocumentation", "src": "30451:77:0", "text": "@dev Having a private function for the modifer saves on the contract size" }, "implemented": true, "kind": "function", "modifiers": [], "name": "_isActive", "nameLocation": "30542:9:0", "parameters": { "id": 2531, "nodeType": "ParameterList", "parameters": [], "src": "30551:2:0" }, "returnParameters": { "id": 2532, "nodeType": "ParameterList", "parameters": [], "src": "30567:0:0" }, "scope": 2582, "stateMutability": "view", "virtual": false, "visibility": "private" }, { "id": 2553, "nodeType": "ModifierDefinition", "src": "30754:62:0", "nodes": [], "body": { "id": 2552, "nodeType": "Block", "src": "30776:40:0", "nodes": [], "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 2548, "name": "_isActive", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2545, "src": "30786:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view" } }, "id": 2549, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "30786:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2550, "nodeType": "ExpressionStatement", "src": "30786:11:0" }, { "id": 2551, "nodeType": "PlaceholderStatement", "src": "30808:1:0" } ] }, "documentation": { "id": 2546, "nodeType": "StructuredDocumentation", "src": "30659:90:0", "text": "@dev Reverts if the staking pool is inactive (not open for staking or\n expired)" }, "name": "whenActive", "nameLocation": "30763:10:0", "parameters": { "id": 2547, "nodeType": "ParameterList", "parameters": [], "src": "30773:2:0" }, "virtual": false, "visibility": "internal" }, { "id": 2568, "nodeType": "ModifierDefinition", "src": "30892:121:0", "nodes": [], "body": { "id": 2567, "nodeType": "Block", "src": "30916:97:0", "nodes": [], "statements": [ { "condition": { "arguments": [], "expression": { "argumentTypes": [], "id": 2556, "name": "isActive", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1412, "src": "30930:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "30930:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2565, "nodeType": "IfStatement", "src": "30926:68:0", "trueBody": { "errorCall": { "arguments": [ { "hexValue": "74727565", "id": 2561, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "30982:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, { "hexValue": "66616c7365", "id": 2562, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "30988:5:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "expression": { "id": 2558, "name": "StakingPoolLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4134, "src": "30949:14:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_StakingPoolLib_$4134_$", "typeString": "type(library StakingPoolLib)" } }, "id": 2560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "30964:17:0", "memberName": "InvalidPoolStatus", "nodeType": "MemberAccess", "referencedDeclaration": 3734, "src": "30949:32:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_bool_$_t_bool_$returns$__$", "typeString": "function (bool,bool) pure" } }, "id": 2563, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "30949:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2564, "nodeType": "RevertStatement", "src": "30942:52:0" } }, { "id": 2566, "nodeType": "PlaceholderStatement", "src": "31005:1:0" } ] }, "documentation": { "id": 2554, "nodeType": "StructuredDocumentation", "src": "30822:65:0", "text": "@dev Reverts if the staking pool is active (open for staking)" }, "name": "whenInactive", "nameLocation": "30901:12:0", "parameters": { "id": 2555, "nodeType": "ParameterList", "parameters": [], "src": "30913:2:0" }, "virtual": false, "visibility": "internal" }, { "id": 2581, "nodeType": "ModifierDefinition", "src": "31072:114:0", "nodes": [], "body": { "id": 2580, "nodeType": "Block", "src": "31098:88:0", "nodes": [], "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 2574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 2571, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "31112:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2572, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "31116:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "31112:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "id": 2573, "name": "_controller", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 99, "src": "31126:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "31112:25:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2578, "nodeType": "IfStatement", "src": "31108:59:0", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 2575, "name": "SenderNotController", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2755, "src": "31146:19:0", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 2576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "31146:21:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2577, "nodeType": "RevertStatement", "src": "31139:28:0" } }, { "id": 2579, "nodeType": "PlaceholderStatement", "src": "31178:1:0" } ] }, "documentation": { "id": 2569, "nodeType": "StructuredDocumentation", "src": "31019:48:0", "text": "@dev Reverts if not sent from the LINK token" }, "name": "onlyController", "nameLocation": "31081:14:0", "parameters": { "id": 2570, "nodeType": "ParameterList", "parameters": [], "src": "31095:2:0" }, "virtual": false, "visibility": "internal" } ], "abstract": false, "baseContracts": [ { "baseName": { "id": 30, "name": "IStaking", "nameLocations": [ "1001:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2932, "src": "1001:8:0" }, "id": 31, "nodeType": "InheritanceSpecifier", "src": "1001:8:0" }, { "baseName": { "id": 32, "name": "IStakingOwner", "nameLocations": [ "1011:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3001, "src": "1011:13:0" }, "id": 33, "nodeType": "InheritanceSpecifier", "src": "1011:13:0" }, { "baseName": { "id": 34, "name": "INodeStaking", "nameLocations": [ "1026:12:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2705, "src": "1026:12:0" }, "id": 35, "nodeType": "InheritanceSpecifier", "src": "1026:12:0" }, { "baseName": { "id": 36, "name": "IMigratable", "nameLocations": [ "1040:11:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2633, "src": "1040:11:0" }, "id": 37, "nodeType": "InheritanceSpecifier", "src": "1040:11:0" }, { "baseName": { "id": 38, "name": "Ownable", "nameLocations": [ "1053:7:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32191, "src": "1053:7:0" }, "id": 39, "nodeType": "InheritanceSpecifier", "src": "1053:7:0" }, { "baseName": { "id": 40, "name": "TypeAndVersionInterface", "nameLocations": [ "1062:23:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 3009, "src": "1062:23:0" }, "id": 41, "nodeType": "InheritanceSpecifier", "src": "1062:23:0" }, { "baseName": { "id": 42, "name": "Pausable", "nameLocations": [ "1087:8:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 32729, "src": "1087:8:0" }, "id": 43, "nodeType": "InheritanceSpecifier", "src": "1087:8:0" } ], "canonicalName": "Staking", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ 2582, 32729, 3009, 32191, 34088, 2633, 2705, 3001, 2932 ], "name": "Staking", "nameLocation": "990:7:0", "scope": 2583, "usedErrors": [ 2610, 2672, 2749, 2752, 2755, 2938, 2941, 2944, 2947, 3053, 3589, 3734, 3739, 3744, 3749, 3754, 3759, 3764, 3769, 3774, 3777, 3784, 3789, 3794, 3799, 3804, 3809 ] } ], "license": "MIT" }, "id": 0 }