5 txs
9 calls
constructor
constructor(address _rewardToken, address _earningPowerCalculator, uint256 _maxBumpTip, address _admin)
functions
admin
viewfunction admin() view returns (address)
alterDelegatee
purefunction alterDelegatee(uint256, address) pure
claimFeeParameters
viewfunction claimFeeParameters() view returns (uint96 feeAmount, address feeCollector)
delegateDepositId
viewfunction delegateDepositId(address delegate) view returns (uint256)
depositorTotalEarningPower
viewfunction depositorTotalEarningPower(address depositor) view returns (uint256 earningPower)
depositorTotalStaked
viewfunction depositorTotalStaked(address depositor) view returns (uint256 amount)
deposits
viewfunction deposits(uint256 depositId) view returns (uint96 balance, address owner, uint96 earningPower, address delegatee, address claimer, uint256 rewardPerTokenCheckpoint, uint256 scaledUnclaimedRewardCheckpoint)
earningPowerCalculator
viewfunction earningPowerCalculator() view returns (address)
isRewardNotifier
viewfunction isRewardNotifier(address rewardNotifier) view returns (bool)
lastCheckpointTime
viewfunction lastCheckpointTime() view returns (uint256)
lastTimeRewardDistributed
viewfunction lastTimeRewardDistributed() view returns (uint256)
MAX_CLAIM_FEE
viewfunction MAX_CLAIM_FEE() view returns (uint256)
maxBumpTip
viewfunction maxBumpTip() view returns (uint256)
REWARD_DURATION
viewfunction REWARD_DURATION() view returns (uint256)
REWARD_TOKEN
viewfunction REWARD_TOKEN() view returns (address)
rewardEndTime
viewfunction rewardEndTime() view returns (uint256)
rewardPerTokenAccumulated
viewfunction rewardPerTokenAccumulated() view returns (uint256)
rewardPerTokenAccumulatedCheckpoint
viewfunction rewardPerTokenAccumulatedCheckpoint() view returns (uint256)
SCALE_FACTOR
viewfunction SCALE_FACTOR() view returns (uint256)
scaledRewardRate
viewfunction scaledRewardRate() view returns (uint256)
STAKE_TOKEN
viewfunction STAKE_TOKEN() view returns (address)
stake
purefunction stake(uint256, address, address) pure returns (uint256)
stake
purefunction stake(uint256, address) pure returns (uint256)
stakeMore
purefunction stakeMore(uint256, uint256) pure
surrogates
purefunction surrogates(address) pure returns (address)
totalEarningPower
viewfunction totalEarningPower() view returns (uint256)
totalStaked
viewfunction totalStaked() view returns (uint256)
unclaimedReward
viewfunction unclaimedReward(uint256 _depositId) view returns (uint256)
withdraw
purefunction withdraw(uint256, uint256) pure
alterClaimer
nonpayablefunction alterClaimer(uint256 _depositId, address _newClaimer)
bumpEarningPower
nonpayablefunction bumpEarningPower(uint256 _depositId, address _tipReceiver, uint256 _requestedTip)
claimReward
nonpayablefunction claimReward(uint256 _depositId) returns (uint256)
initializeDelegateCompensation
nonpayablefunction initializeDelegateCompensation(address _delegate) returns (uint256)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
notifyRewardAmount
nonpayablefunction notifyRewardAmount(uint256 _amount)
setAdmin
nonpayablefunction setAdmin(address _newAdmin)
setClaimFeeParameters
nonpayablefunction setClaimFeeParameters(tuple _params)
setEarningPowerCalculator
nonpayablefunction setEarningPowerCalculator(address _newEarningPowerCalculator)
setMaxBumpTip
nonpayablefunction setMaxBumpTip(uint256 _newMaxBumpTip)
setRewardNotifier
nonpayablefunction setRewardNotifier(address _rewardNotifier, bool _isEnabled)
events
AdminSet
event AdminSet(address indexed oldAdmin, address indexed newAdmin)
ClaimerAltered
event ClaimerAltered(uint256 indexed depositId, address indexed oldClaimer, address indexed newClaimer, uint256 earningPower)
ClaimFeeParametersSet
event ClaimFeeParametersSet(uint96 oldFeeAmount, uint96 newFeeAmount, address oldFeeCollector, address newFeeCollector)
DelegateCompensation__Initialized
event DelegateCompensation__Initialized(address indexed delegate, uint256 indexed depositId, uint256 earningPower)
DelegateeAltered
event DelegateeAltered(uint256 indexed depositId, address oldDelegatee, address newDelegatee, uint256 earningPower)
EarningPowerBumped
event EarningPowerBumped(uint256 indexed depositId, uint256 oldEarningPower, uint256 newEarningPower, address bumper, address tipReceiver, uint256 tipAmount)
EarningPowerCalculatorSet
event EarningPowerCalculatorSet(address indexed oldEarningPowerCalculator, address indexed newEarningPowerCalculator)
MaxBumpTipSet
event MaxBumpTipSet(uint256 oldMaxBumpTip, uint256 newMaxBumpTip)
RewardClaimed
event RewardClaimed(uint256 indexed depositId, address indexed claimer, uint256 amount, uint256 earningPower)
RewardNotified
event RewardNotified(uint256 amount, address notifier)
RewardNotifierSet
event RewardNotifierSet(address indexed account, bool isEnabled)
StakeDeposited
event StakeDeposited(address owner, uint256 indexed depositId, uint256 amount, uint256 depositBalance, uint256 earningPower)
StakeWithdrawn
event StakeWithdrawn(address owner, uint256 indexed depositId, uint256 amount, uint256 depositBalance, uint256 earningPower)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
DelegateCompensationStaker__AlreadyInitialized
error DelegateCompensationStaker__AlreadyInitialized(address delegate)
DelegateCompensationStaker__MethodNotSupported
error DelegateCompensationStaker__MethodNotSupported()
FailedInnerCall
error FailedInnerCall()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Staker__ExpiredDeadline
error Staker__ExpiredDeadline()
Staker__InsufficientRewardBalance
error Staker__InsufficientRewardBalance()
Staker__InsufficientUnclaimedRewards
error Staker__InsufficientUnclaimedRewards()
Staker__InvalidAddress
error Staker__InvalidAddress()
Staker__InvalidClaimFeeParameters
error Staker__InvalidClaimFeeParameters()
Staker__InvalidRewardRate
error Staker__InvalidRewardRate()
Staker__InvalidSignature
error Staker__InvalidSignature()
Staker__InvalidTip
error Staker__InvalidTip()
Staker__Unauthorized
error Staker__Unauthorized(bytes32 reason, address caller)
Staker__Unqualified
error Staker__Unqualified(uint256 score)
creation bytecode
0x60e060405234801561000f575f5ffd5b5060405161225438038061225483398101604081905261002e916101d7565b6001600160a01b0384166080525f60a0819052849084848461004f8161007e565b610058826100e2565b61006183610123565b505050505061007461018760201b60201c565b505050505061024e565b61008781610199565b6001546040516001600160a01b038084169216907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97905f90a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60025460408051918252602082018390527faeea2b5ee5fb4e4473cc85584d77137f4c6f996691f89746291ce55425120015910160405180910390a1600255565b61012c81610199565b6005546040516001600160a01b038084169216907fb7c75e18483153b6b8c9c9a379610df50999c601b86f112f162ea62bc8678724905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610194816001610229565b5f5590565b6001600160a01b0381166101c057604051630426574760e11b815260040160405180910390fd5b50565b6001600160a01b03811681146101c0575f5ffd5b5f5f5f5f608085870312156101ea575f5ffd5b84516101f5816101c3565b6020860151909450610206816101c3565b60408601516060870151919450925061021e816101c3565b939692955090935050565b8082018082111561024857634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c051611fb961029b5f395f818161032e015261113901525f61028c01525f8181610450015281816109c701528181610b74015281816116cd015261170d0152611fb95ff3fe608060405234801561000f575f5ffd5b506004361061023f575f3560e01c80637aa23c5211610135578063bb60030d116100b4578063ce4b5bbe11610079578063ce4b5bbe146105db578063ddda8a11146105f0578063e6dec270146105f8578063e70f944514610606578063f851a44014610638575f5ffd5b8063bb60030d14610584578063c3be997814610597578063c3c16e4e146105b6578063c6f6173b146105bf578063cb3056ad146105c8575f5ffd5b8063a7d545db116100fa578063a7d545db14610485578063ac9650d814610493578063ae0d27b6146104b3578063ae169a50146104bb578063b02c43d0146104ce575f5ffd5b80637aa23c52146104265780637acb77571461042f578063817b1cd21461044257806399248ea71461044b578063994207ae14610472575f5ffd5b806346800f75116101c1578063703762da11610186578063703762da1461031b578063704b6c021461039557806370805cdb146103a857806372a35df9146103c7578063774da674146103da575f5ffd5b806346800f751461032957806349583576146103505780635ade228a1461036357806361dc05491461036d57806364b5c91c14610376575f5ffd5b80632c4f88cd116102075780632c4f88cd146102d957806334560e50146102ec57806337e9f64a146102ff5780633c6b16ab14610308578063441a3e701461031b575f5ffd5b80630495d72514610243578063073a2ae91461025857806308484dee1461026b5780631c39b67214610287578063255a4f73146102c6575b5f5ffd5b610256610251366004611b97565b61064b565b005b610256610266366004611c0b565b61065f565b61027460045481565b6040519081526020015b60405180910390f35b6102ae7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161027e565b6102566102d4366004611c42565b610678565b6102566102e7366004611c77565b6106de565b6102566102fa366004611c8e565b6106ef565b61027460095481565b610256610316366004611c77565b610a25565b610256610266366004611cc1565b6102747f000000000000000000000000000000000000000000000000000000000000000081565b61025661035e366004611ce1565b610c5a565b61027462278d0081565b610274600a5481565b610274610384366004611ce1565b60076020525f908152604090205481565b6102566103a3366004611ce1565b610c6b565b6102746103b6366004611ce1565b600f6020525f908152604090205481565b6005546102ae906001600160a01b031681565b600e546103ff906001600160601b03811690600160601b90046001600160a01b031682565b604080516001600160601b0390931683526001600160a01b0390911660208301520161027e565b61027460025481565b61027461043d366004611c0b565b610c7c565b61027460035481565b6102ae7f000000000000000000000000000000000000000000000000000000000000000081565b610274610480366004611ce1565b610c96565b61027461043d366004611cfa565b6104a66104a1366004611d33565b610ec6565b60405161027e9190611da4565b610274610fad565b6102746104c9366004611c77565b610fff565b6105326104dc366004611c77565b60086020525f9081526040902080546001820154600283015460038401546004909401546001600160601b03808516956001600160a01b03600160601b9687900481169692861695929092048216939091169187565b604080516001600160601b0398891681526001600160a01b0397881660208201529790951694870194909452918416606086015292909216608084015260a083019190915260c082015260e00161027e565b610256610592366004611c0b565b611089565b6102746105a5366004611ce1565b60066020525f908152604090205481565b610274600b5481565b610274600c5481565b6102746105d6366004611c77565b6110b0565b6102746a0c097ce7bc90715b34b9f160241b81565b6102746110e0565b6102ae61043d366004611ce1565b610628610614366004611ce1565b600d6020525f908152604090205460ff1681565b604051901515815260200161027e565b6001546102ae906001600160a01b031681565b6106536110f6565b61065c81611137565b50565b604051635bc08f3f60e11b815260040160405180910390fd5b6106806110f6565b6001600160a01b0382165f818152600d6020908152604091829020805460ff191685151590811790915591519182527fb33ca1dabfb28a2e1bd06b332c396b1a3d538278691341a5503bbad53f919197910160405180910390a25050565b6106e66110f6565b61065c8161124a565b6002548111156107125760405163192501ab60e31b815260040160405180910390fd5b5f83815260086020526040902061072761128b565b610730816112a3565b5f6a0c097ce7bc90715b34b9f160241b826004015461074f9190611e3c565b6005548354600185015460405160016243a1e360e11b031981526001600160601b0380841660048301526001600160a01b03600160601b94859004811660248401529383048416604483015290911660648201529293505f928392919091169063ff78bc3a906084016040805180830381865afa1580156107d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f69190611e5b565b91509150801580610813575060018401546001600160601b031682145b1561083957604051632b2807ef60e21b8152600481018390526024015b60405180910390fd5b60018401546001600160601b03168211801561085457508483105b156108725760405163b219487760e01b815260040160405180910390fd5b60018401546001600160601b03168210801561089857506002546108968685611e7f565b105b156108b65760405163b219487760e01b815260040160405180910390fd5b6001840154604080516001600160601b0390921682526020820184905233908201526001600160a01b03871660608201526080810186905287907f04d2114cbff027138003f7a9e452588f683397107f4d4ab1a83f17e80ebad12e9060a00160405180910390a2600184015460045461093a916001600160601b03169084906112bc565b60045560018401548454600160601b90046001600160a01b03165f90815260076020526040902054610977916001600160601b03169084906112bc565b8454600160601b90046001600160a01b03165f908152600760205260409020556109a0826112da565b6001850180546001600160601b0319166001600160601b03929092169190911790556109ed7f00000000000000000000000000000000000000000000000000000000000000008787611311565b610a056a0c097ce7bc90715b34b9f160241b86611e92565b8460040154610a149190611e7f565b846004018190555050505050505050565b335f908152600d602052604090205460ff16610a6b57604051630581a50f60e41b81526b3737ba103737ba34b334b2b960a11b6004820152336024820152604401610830565b610a73610fad565b600c556009544210610aad5762278d00610a9b6a0c097ce7bc90715b34b9f160241b83611e92565b610aa59190611e3c565b600b55610b00565b5f42600954610abc9190611e7f565b600b54610ac99190611e92565b905062278d00610ae76a0c097ce7bc90715b34b9f160241b84611e92565b610af19083611ea9565b610afb9190611e3c565b600b55505b610b0d62278d0042611ea9565b60095542600a55600b54610b30906a0c097ce7bc90715b34b9f160241b90611e3c565b5f03610b4f57604051631a9bcffd60e31b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526a0c097ce7bc90715b34b9f160241b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610bc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be59190611ebc565b610bef9190611e92565b62278d00600b54610c009190611e92565b1115610c1f57604051631d1cffe960e31b815260040160405180910390fd5b604080518281523360208201527f48f411442545d43fc993afadc0fd408cf0d1c606f3d10d1de7b05c994463ed97910160405180910390a150565b610c626110f6565b61065c81611363565b610c736110f6565b61065c816113c7565b5f604051635bc08f3f60e11b815260040160405180910390fd5b6001600160a01b0381165f908152600f602052604081205415610cd7576040516349cc807b60e11b81526001600160a01b0383166004820152602401610830565b610cdf61128b565b5f610ce861142b565b60055460405162834efd60e71b81525f600482018190526001600160a01b0387811660248401819052604484015293945092909116906341a77e8090606401602060405180830381865afa158015610d42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d669190611ebc565b90508060045f828254610d799190611ea9565b90915550506001600160a01b0384165f9081526007602052604081208054839290610da5908490611ea9565b90915550506040805160e0810182525f81526001600160a01b0386166020820152908101610dd2836112da565b6001600160601b0390811682526001600160a01b0387811660208085018290526040808601839052600c546060808801919091525f60809788018190528a81526008845282812089518a860151908916600160601b91891682021782558a850151938b015193909816928716909702919091176001870155958701516002860180546001600160a01b031916919095161790935560a0860151600385015560c090950151600490930192909255818352600f845291829020859055905183815284927fc0cc9873a19529b3a3d1668ff343d82877175dce443317b245f3fef1ffc01b30910160405180910390a35092915050565b604080515f8152602081019091526060908267ffffffffffffffff811115610ef057610ef0611b68565b604051908082528060200260200182016040528015610f2357816020015b6060815260200190600190039081610f0e5790505b5091505f5b83811015610fa457610f7f30868684818110610f4657610f46611ed3565b9050602002810190610f589190611ee7565b85604051602001610f6b93929190611f48565b60405160208183030381529060405261143d565b838281518110610f9157610f91611ed3565b6020908102919091010152600101610f28565b50505b92915050565b5f6004545f03610fbe5750600c5490565b600454600a54610fcc6110e0565b610fd69190611e7f565b600b54610fe39190611e92565b610fed9190611e3c565b600c54610ffa9190611ea9565b905090565b5f81815260086020526040812060028101546001600160a01b0316331480159061103a57508054600160601b90046001600160a01b03163314155b1561107757604051630581a50f60e41b8152733737ba1031b630b4b6b2b91037b91037bbb732b960611b6004820152336024820152604401610830565b6110828382336114af565b9392505050565b5f8281526008602052604090206110a08133611756565b6110ab8184846117ab565b505050565b5f8181526008602052604081206a0c097ce7bc90715b34b9f160241b906110d690611976565b610fa79190611e3c565b5f42600954116110f1575060095490565b504290565b6001546001600160a01b0316331461113557604051630581a50f60e41b8152683737ba1030b236b4b760b91b6004820152336024820152604401610830565b565b7f0000000000000000000000000000000000000000000000000000000000000000815f01516001600160601b03161180611190575060208101516001600160a01b0316158015611190575080516001600160601b031615155b156111b157604051600162505a9360e01b0319815260040160405180910390fd5b600e548151602080840151604080516001600160601b038087168252909416928401929092526001600160a01b03600160601b90940484168383015292909216606082015290517f2b9fb16353eaf3b33538b5a2635d05cee2876d96ddd81b0d2ea647b44594a11b9181900360800190a180516020909101516001600160a01b0316600160601b026001600160601b0390911617600e55565b60025460408051918252602082018390527faeea2b5ee5fb4e4473cc85584d77137f4c6f996691f89746291ce55425120015910160405180910390a1600255565b611293610fad565b600c5561129e6110e0565b600a55565b6112ac81611976565b6004820155600c54600390910155565b5f836112c88484611ea9565b6112d29190611e7f565b949350505050565b5f6001600160601b0382111561130d576040516306dfcc6560e41b81526060600482015260248101839052604401610830565b5090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526110ab9084906119b5565b61136c81611a16565b6005546040516001600160a01b038084169216907fb7c75e18483153b6b8c9c9a379610df50999c601b86f112f162ea62bc8678724905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6113d081611a16565b6001546040516001600160a01b038084169216907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97905f90a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f54611438816001611ea9565b5f5590565b60605f5f846001600160a01b0316846040516114599190611f5d565b5f60405180830381855af49150503d805f8114611491576040519150601f19603f3d011682016040523d82523d5f602084013e611496565b606091505b50915091506114a6858383611a3d565b95945050505050565b5f6114b861128b565b6114c1836112a3565b5f6a0c097ce7bc90715b34b9f160241b84600401546114e09190611e3c565b600e549091505f906114fb906001600160601b031683611e7f565b9050805f0361150e575f92505050611082565b6115266a0c097ce7bc90715b34b9f160241b83611e92565b85600401546115359190611e7f565b6004868101919091556005548654600188015460405162834efd60e71b81526001600160601b038316948101949094526001600160a01b03600160601b9283900481166024860152919004811660448401525f929116906341a77e8090606401602060405180830381865afa1580156115b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d49190611ebc565b9050846001600160a01b0316877ffc6ecd966b430510beae9124efe7dd517ed5286d7ed0ae258f8556c7a9765a44848460405161161b929190918252602082015260400190565b60405180910390a36001860154600454611640916001600160601b03169083906112bc565b60045560018601548654600160601b90046001600160a01b03165f9081526007602052604090205461167d916001600160601b03169083906112bc565b8654600160601b90046001600160a01b03165f908152600760205260409020556116a6816112da565b6001870180546001600160601b0319166001600160601b03929092169190911790556116f37f00000000000000000000000000000000000000000000000000000000000000008684611311565b600e546001600160601b03161561174c57600e5461174c907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03600160601b820416906001600160601b0316611311565b5095945050505050565b81546001600160a01b03828116600160601b90920416146117a757604051630581a50f60e41b8152683737ba1037bbb732b960b91b60048201526001600160a01b0382166024820152604401610830565b5050565b6117b481611a16565b6117bc61128b565b6117c5836112a3565b6005548354600185015460405162834efd60e71b81526001600160601b03831660048201526001600160a01b03600160601b938490048116602483015292909104821660448201525f9291909116906341a77e8090606401602060405180830381865afa158015611838573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061185c9190611ebc565b600185015460045491925061187e916001600160601b039091169083906112bc565b60045560018401548454600160601b90046001600160a01b03165f908152600760205260409020546118bb916001600160601b03169083906112bc565b8454600160601b90046001600160a01b03165f908152600760205260409020556118e4816112da565b6001850180546001600160601b0319166001600160601b039290921691909117905560028401546040518281526001600160a01b0384811692169085907f76ecb53d27210f298c33177d8fc8947b65cc94a2d54f65112683d2369058af909060200160405180910390a45060029290920180546001600160a01b0319166001600160a01b039093169290921790915550565b5f8160030154611984610fad565b61198e9190611e7f565b60018301546119a691906001600160601b0316611e92565b8260040154610fa79190611ea9565b5f6119c96001600160a01b03841683611a99565b905080515f141580156119ed5750808060200190518101906119eb9190611f68565b155b156110ab57604051635274afe760e01b81526001600160a01b0384166004820152602401610830565b6001600160a01b03811661065c57604051630426574760e11b815260040160405180910390fd5b606082611a5257611a4d82611aa6565b611082565b8151158015611a6957506001600160a01b0384163b155b15611a9257604051639996b31560e01b81526001600160a01b0385166004820152602401610830565b5080611082565b606061108283835f611acf565b805115611ab65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b606081471015611af45760405163cd78605960e01b8152306004820152602401610830565b5f5f856001600160a01b03168486604051611b0f9190611f5d565b5f6040518083038185875af1925050503d805f8114611b49576040519150601f19603f3d011682016040523d82523d5f602084013e611b4e565b606091505b5091509150611b5e868383611a3d565b9695505050505050565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b0381168114611b92575f5ffd5b919050565b5f6040828403128015611ba8575f5ffd5b506040805190810167ffffffffffffffff81118282101715611bd857634e487b7160e01b5f52604160045260245ffd5b60405282356001600160601b0381168114611bf1575f5ffd5b8152611bff60208401611b7c565b60208201529392505050565b5f5f60408385031215611c1c575f5ffd5b82359150611c2c60208401611b7c565b90509250929050565b801515811461065c575f5ffd5b5f5f60408385031215611c53575f5ffd5b611c5c83611b7c565b91506020830135611c6c81611c35565b809150509250929050565b5f60208284031215611c87575f5ffd5b5035919050565b5f5f5f60608486031215611ca0575f5ffd5b83359250611cb060208501611b7c565b929592945050506040919091013590565b5f5f60408385031215611cd2575f5ffd5b50508035926020909101359150565b5f60208284031215611cf1575f5ffd5b61108282611b7c565b5f5f5f60608486031215611d0c575f5ffd5b83359250611d1c60208501611b7c565b9150611d2a60408501611b7c565b90509250925092565b5f5f60208385031215611d44575f5ffd5b823567ffffffffffffffff811115611d5a575f5ffd5b8301601f81018513611d6a575f5ffd5b803567ffffffffffffffff811115611d80575f5ffd5b8560208260051b8401011115611d94575f5ffd5b6020919091019590945092505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611e1c57603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f83011688010196505050602082019150602084019350600181019050611dca565b50929695505050505050565b634e487b7160e01b5f52601160045260245ffd5b5f82611e5657634e487b7160e01b5f52601260045260245ffd5b500490565b5f5f60408385031215611e6c575f5ffd5b82516020840151909250611c6c81611c35565b81810381811115610fa757610fa7611e28565b8082028115828204841417610fa757610fa7611e28565b80820180821115610fa757610fa7611e28565b5f60208284031215611ecc575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e19843603018112611efc575f5ffd5b83018035915067ffffffffffffffff821115611f16575f5ffd5b602001915036819003821315611f2a575f5ffd5b9250929050565b5f81518060208401855e5f93019283525090919050565b828482375f8382015f8152611b5e8185611f31565b5f6110828284611f31565b5f60208284031215611f78575f5ffd5b815161108281611c3556fea264697066735822122037b837a660a9d1bfc092c37a281ade0af353f75e4f72b682aec5f35112aefd2364736f6c634300081c00330000000000000000000000000b010000b7624eb9b3dfbc279673c76e9d29d5f7000000000000000000000000a5d7229d67f702b59e1cd0633a661cae6f11121b0000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000985a2aa51e24e2a31a02ed179b055266bf4243f4