0 txs
4 calls
constructor
constructor(address network, address networkMiddlewareService)
functions
claimed
viewfunction claimed(uint48 eraIndex, bytes32 account) view returns (uint256 amount)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
eraIndexesPerEpoch
viewfunction eraIndexesPerEpoch(uint48 epoch, uint256 index) view returns (uint48 eraIndex)
eraRoot
viewfunction eraRoot(uint48 eraIndex) view returns (tuple eraRoot_)
getRole
viewfunction getRole(bytes4 selector) view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
i_network
viewfunction i_network() view returns (address)
i_networkMiddlewareService
viewfunction i_networkMiddlewareService() view returns (address)
MAX_PERCENTAGE
viewfunction MAX_PERCENTAGE() view returns (uint48)
MIDDLEWARE_ROLE
viewfunction MIDDLEWARE_ROLE() view returns (bytes32)
operatorShare
viewfunction operatorShare() view returns (uint48 operatorShare_)
OzAccessControl_VERSION
viewfunction OzAccessControl_VERSION() view returns (uint64)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
STAKER_REWARDS_SETTER_ROLE
viewfunction STAKER_REWARDS_SETTER_ROLE() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
vaultToStakerRewardsContract
viewfunction vaultToStakerRewardsContract(address vault) view returns (address stakerRewards)
claimRewards
nonpayablefunction claimRewards(tuple input) returns (uint256 amount)
distributeRewards
nonpayablefunction distributeRewards(uint48 epoch, uint48 eraIndex, uint256 amount, uint256 totalPoints, bytes32 root, address tokenAddress)
fix
nonpayablefunction fix(uint48 operatorShare_, address[] vaults, address[] stakerRewards)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(uint48 operatorShare_, address owner)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setOperatorShare
nonpayablefunction setOperatorShare(uint48 operatorShare_)
setStakerRewardContract
nonpayablefunction setStakerRewardContract(address stakerRewards, address vault)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
ClaimRewards
event ClaimRewards(address indexed recipient, address indexed tokenAddress, uint48 indexed eraIndex, uint48 epoch, address claimer, uint256 amount)
DistributeRewards
event DistributeRewards(uint48 indexed epoch, uint48 indexed eraIndex, address indexed tokenAddress, uint256 points, uint256 amount, bytes32 root)
Initialized
event Initialized(uint64 version)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SelectorRoleSet
event SelectorRoleSet(bytes4 indexed selector, bytes32 indexed role)
SetOperatorShare
event SetOperatorShare(uint48 indexed operatorShare)
SetStakerRewardContract
event SetStakerRewardContract(address indexed stakerRewards, address indexed vault)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 role)
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ODefaultOperatorRewards__AlreadyClaimed
error ODefaultOperatorRewards__AlreadyClaimed()
ODefaultOperatorRewards__AlreadySet
error ODefaultOperatorRewards__AlreadySet()
ODefaultOperatorRewards__InsufficientTransfer
error ODefaultOperatorRewards__InsufficientTransfer()
ODefaultOperatorRewards__InvalidAddress
error ODefaultOperatorRewards__InvalidAddress()
ODefaultOperatorRewards__InvalidOperatorShare
error ODefaultOperatorRewards__InvalidOperatorShare()
ODefaultOperatorRewards__InvalidProof
error ODefaultOperatorRewards__InvalidProof()
ODefaultOperatorRewards__InvalidValues
error ODefaultOperatorRewards__InvalidValues()
ODefaultOperatorRewards__NoVaults
error ODefaultOperatorRewards__NoVaults()
ODefaultOperatorRewards__RootNotSet
error ODefaultOperatorRewards__RootNotSet()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60e034610142576126d2906001600160401b0390601f38849003908101601f19168201908382118383101761014657808391604096879485528339810103126101425761005760206100508361015a565b920161015a565b91306080526100658261016e565b61006e8361016e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101315780808316036100ed575b50505060c05260a0525161254190816101918239608051818181610e580152610f36015260a0518181816106c90152611597015260c051818181610db201526115620152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a7565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361014257565b6001600160a01b03161561017e57565b604051630206c52f60e31b8152600490fdfe60806040526004361015610011575f80fd5b5f3560e01c806313d05a9e14611395578063248a9ca3146113495780632f2ff15d146112d95780632f6bf0461461129f5780633105e4db1461126557806336568abe1461121e57806338814e8a146111215780634c255c97146111055780634f1ef28614610eba57806352d1902d14610e3e57806353c630f514610dd65780636908950c14610d935780638263c50314610c7b57806391d1485414610c12578063a217fddf14610bf8578063a813c43514610bb4578063a846156d14610b5a578063ad3cb1cc14610af9578063baeb72e714610a93578063c39edfe6146107f9578063c52a6697146107de578063c5b44286146106ed578063c657cc1e146106aa578063d547741f14610619578063db806aa9146105a3578063e6c8d87a146104bb5763fb6a74c914610142575f80fd5b346104565760c03660031901126104565761015b611e73565b65ffffffffffff6024351680602435036104565760a4356001600160a01b03811681036104565761018a611fc1565b6101926121e8565b6044351580156104b1575b61049f576040516370a0823160e01b808252306004830152906020816024816001600160a01b0387165afa908115610462575f9161046d575b5061021a6040516323b872dd60e01b602082015233602482015230604482015260443560648201526064815261020b81611dfd565b6001600160a01b03851661244e565b6040519182523060048301526020826024816001600160a01b0387165afa918215610462575f92610428575b506102549060443592611fb4565b036104165760405161026581611dfd565b65ffffffffffff841681526001600160a01b03600460208301926044358452604081016064358152606082019060843582526080830195858816875265ffffffffffff6102e360243565ffffffffffff165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40160205260405f2090565b94511665ffffffffffff19855416178455516001840155516002830155516003820155019151166001600160a01b03198254161790556103528365ffffffffffff165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40260205260405f2090565b8054680100000000000000008110156104025761037491600182018155611f94565b81549060031b9065ffffffffffff85831b921b19161790557f3dffa34c2622f261926a2d0e8a7f4a4002b30aeef6094c98f30510b30512e11a606065ffffffffffff6001600160a01b036040519460643586526044356020870152608435604087015216951692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b634e487b7160e01b5f52604160045260245ffd5b604051630ec6dcc760e21b8152600490fd5b9091506020813d60201161045a575b8161044460209383611e35565b81010312610456575190610254610246565b5f80fd5b3d9150610437565b6040513d5f823e3d90fd5b90506020813d602011610497575b8161048860209383611e35565b8101031261045657515f6101d6565b3d915061047b565b60405163659dc57160e01b8152600490fd5b506064351561019d565b34610456576020366003190112610456576104d4611e73565b6104dc6121e8565b65ffffffffffff9081811691612710831015610591577f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd4005416821461057f576105599065ffffffffffff7f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd400911665ffffffffffff19825416179055565b7f7ec4eb07598edbeea63a445055fe621394075fee1a4cefb8b402411dd27340fe5f80a2005b604051632fa6da0160e01b8152600490fd5b60405163e8ef29e360e01b8152600490fd5b3461045657604036600319011261045657602065ffffffffffff6106096105c8611e73565b6106046024359165ffffffffffff165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40260205260405f2090565b611f94565b9190546040519260031b1c168152f35b3461045657604036600319011261045657600435610635611dd1565b815f527fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f00602052600160405f20015491825f5260405f20335f5260205260ff60405f2054161561068b576106899250612150565b005b60405163e2517d3f60e01b815233600482015260248101849052604490fd5b34610456575f3660031901126104565760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104565760203660031901126104565760a061076661070b611e73565b5f608060405161071a81611dfd565b828152826020820152826040820152826060820152015265ffffffffffff165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40160205260405f2090565b600460405161077481611dfd565b65ffffffffffff83541692838252600181015460208301908152600282015490604084019182526080600384015493606086019485526001600160a01b03968791015416940193845260405195865251602086015251604085015251606084015251166080820152f35b34610456575f36600319011261045657602060405160018152f35b3461045657604036600319011261045657610812611e73565b61081a611dd1565b907ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff8360401c16159267ffffffffffffffff811680159081610a8b575b6001149081610a81575b159081610a78575b50610a665767ffffffffffffffff198116600117855583610a47575b5061089582612292565b61271065ffffffffffff8216101561059157610901610a04926108b661240d565b6108be61240d565b6108c661240d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556108f261240d565b6108fb81612003565b50612003565b5063fb6a74c960e01b805f527fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f016020527f98cc91a5442060c87a4011de96e2926e239b5530239140eb873f560f7086b24f8060405f2055807fb579d5e7e95ac8795a9c9ecce0ee2e2d189dce9827bac2e35ebbd3a68be7d42392835f80a36373646c3d60e11b805f528160405f2055825f80a3631c40a74560e11b805f527fc91a5849e8fdac73720a9e289d7912b37f010adc1b4ee9ae24de0b6de2c52dd8918260405f20555f80a365ffffffffffff7f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd400911665ffffffffffff19825416179055565b610a0a57005b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff1916680100000000000000011784558461088b565b60405163f92ee8a960e01b8152600490fd5b9050158661086f565b303b159150610867565b85915061085d565b346104565760203660031901126104565760206001600160a01b03610aef610ab9611de7565b6001600160a01b03165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40460205260405f2090565b5416604051908152f35b34610456575f36600319011261045657610b56604051610b1881611e19565b600581527f352e302e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190611f10565b0390f35b346104565760203660031901126104565760043563ffffffff60e01b8116809103610456575f527fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f01602052602060405f2054604051908152f35b34610456575f36600319011261045657602065ffffffffffff7f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd4005416604051908152f35b34610456575f3660031901126104565760206040515f8152f35b3461045657604036600319011261045657610c2b611dd1565b6004355f527fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f006020526001600160a01b0360405f2091165f52602052602060ff60405f2054166040519015158152f35b3461045657606036600319011261045657610c94611e73565b67ffffffffffffffff60243581811161045657610cb5903690600401611ea0565b9060443590811161045657610cd1610d14913690600401611ea0565b92610cda6121e8565b65ffffffffffff7f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd400911665ffffffffffff19825416179055565b5f5b8151811015610689576001906001600160a01b03610d7d81610d388488611f6c565b511691610d458487611f6c565b51166001600160a01b03165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40460205260405f2090565b906001600160a01b031982541617905501610d16565b34610456575f3660031901126104565760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461045657604036600319011261045657610e27610df2611e73565b65ffffffffffff165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40360205260405f2090565b6024355f52602052602060405f2054604051908152f35b34610456575f366003190112610456576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ea85760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60405163703e46dd60e11b8152600490fd5b604036600319011261045657610ece611de7565b602490813567ffffffffffffffff81116104565736602382011215610456578060040135610efb81611e57565b92610f096040519485611e35565b818452602091828501933687838301011161045657815f92888693018737860101526001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000168030149081156110d7575b50610ea857610f6e6121e8565b8116936040516352d1902d60e01b81528381600481895afa5f91816110a8575b50610fab57604051634c9c8ce360e01b8152600481018790528790fd5b8590877f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc918281036110935750843b1561107d5750816001600160a01b0319825416179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a281511561106257505f6106899481925190845af4903d15611059573d61103d81611e57565b9061104b6040519283611e35565b81525f81943d92013e6124a8565b606092506124a8565b93505050503461106e57005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101849052fd5b60405190632a87526960e21b82526004820152fd5b9091508481813d83116110d0575b6110c08183611e35565b8101031261045657519088610f8e565b503d6110b6565b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141587610f61565b34610456575f3660031901126104565760206040516127108152f35b346104565760403660031901126104565761113a611de7565b611142611dd1565b61114a6121e8565b61115382612292565b61115c81612292565b6001600160a01b039081806111a1836001600160a01b03165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40460205260405f2090565b5416931680931461057f576111e6816001600160a01b03165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40460205260405f2090565b836001600160a01b031982541617905516907ffc2df3523b3f1518aa0f8f92d68e8b8c892a5e1ff1d6403a9c81bd5fbc44e5ff5f80a3005b3461045657604036600319011261045657611237611dd1565b336001600160a01b038216036112535761068990600435612150565b60405163334bd91960e11b8152600490fd5b34610456575f3660031901126104565760206040517fc91a5849e8fdac73720a9e289d7912b37f010adc1b4ee9ae24de0b6de2c52dd88152f35b34610456575f3660031901126104565760206040517f98cc91a5442060c87a4011de96e2926e239b5530239140eb873f560f7086b24f8152f35b34610456576040366003190112610456576004356112f5611dd1565b815f527fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f00602052600160405f20015491825f5260405f20335f5260205260ff60405f2054161561068b5761068992506120b4565b34610456576020366003190112610456576004355f527fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f006020526020600160405f200154604051908152f35b34610456576003196020368201126104565767ffffffffffffffff600435116104565760a09060043536030112610456576113ce611fc1565b6114146113df602460043501611f34565b65ffffffffffff165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40160205260405f2090565b60405161142081611dfd565b65ffffffffffff825416815260018201546020820152600282015460408201526001600160a01b0360046003840154938460608501520154169182608083015215611dbf576004356064810135903603602219018112156104565767ffffffffffffffff60048281350101351161045657600481813501013560051b3603602482600435010113610456576060820151906114bf604460043501611f47565b62ff00ff63ff00ff008260081b169160081c16176040519060043560040135602083015263ffffffff60e01b9063ffffffff808260101b169160101c161760e01b1660408201526024815280606081011067ffffffffffffffff606083011117610402576060810160405260208151910120905f905b60048181350101358210611d8057505003611d6e5760405191635daf681960e11b83526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048401526020836024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa928315610462575f93611d2f575b50611631906115f363ffffffff6115e2604460043501611f47565b16602085015160408601519161232e565b926020604051600435600401358282015281815261161081611e19565b60405180958192633e1ad83f60e01b83528460048401526024830190611f10565b03816001600160a01b0389165afa928315610462575f93611cf3575b5061165c602460043501611f34565b6116958165ffffffffffff165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40360205260405f2090565b600435600401355f5260205260405f2054611ce1576116e39065ffffffffffff165f527f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd40360205260405f2090565b600435600401355f526020528360405f205561172865ffffffffffff7f9e763766bd4dc4b79493b61f657e7d458cf0270bbd21be73fbf773df86fbd4005416856122b4565b61179161177e6117388388611fb4565b9261178c6001600160a01b036080870151169160405193849163a9059cbb60e01b60208401528a60248401602090939291936001600160a01b0360408201951681520152565b03601f198101845283611e35565b61244e565b65ffffffffffff825116956117aa602460043501611f34565b9060043560848101359036036022190181121561045657600435019767ffffffffffffffff60048a013511610456576004890135360360248a01136104565760405163246e158f60e01b815260048101829052916020836024816001600160a01b0385165afa928315610462575f93611c9e575b5060405190630bfdd53360e21b82526001600160a01b038916600483015265ffffffffffff841660248301525f826044816001600160a01b0385165afa918215610462575f92611bf1575b508151958615611bdf5761187f879592956123db565b915f955f915b898310611b15575050505f611899886123db565b955f915b898310611aae5750505050505f5b85811061193f5760208a8a8a8a7f9d8fb8328c7ad43955690fed436dc7c1287eb2e99da2f9fc184f504b4dbaaa0a60606001600160a01b0365ffffffffffff806118f9602460043501611f34565b95511694604051958652338a87015288604087015216951692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051908152f35b6119498185611f6c565b51611957575b6001016118ab565b6001600160a01b0361196d81610d458486611f6c565b5416905f60206119b58b611981858a611f6c565b5160405163095ea7b360e01b81526001600160a01b0388166004820152602481019190915293849283919082906044820190565b03925af1801561046257611a76575b506119cf8186611f6c565b5191803b156104565765ffffffffffff5f91888f84908e6040519889968795630ea0b76d60e41b87528d60048801521660248601526044850152606484015260a06084840152600481013560a48401528260c49160048101356024820184840137600401358181018301849052601f01601f191681010301925af1801561046257611a5c575b905061194f565b67ffffffffffffffff821161040257600191604052611a55565b6020813d602011611aa6575b81611a8f60209383611e35565b81010312610456575180151503610456578c6119c4565b3d9150611a82565b895f19810111611b01576001905f198b018403611ae657611acf8186611fb4565b905b81611adc868c611f6c565b520192019161189d565b611afb8386611af5878a611f6c565b5161232e565b90611ad1565b634e487b7160e01b5f52601160045260245ffd5b9091968c6001600160a01b03611b2b8a89611f6c565b51166001600160a01b0360405192635e6e295f60e11b845265ffffffffffff8616600485015216602483015260448201525f60648201526020816084816001600160a01b0388165afa908115610462575f91611bad575b50611b8d8987611f6c565b52611b988886611f6c565b518101809111611b0157966001019190611885565b90506020813d602011611bd7575b81611bc860209383611e35565b8101031261045657515f611b82565b3d9150611bbb565b6040516374f9d54560e11b8152600490fd5b9091503d805f833e611c038183611e35565b8101906040818303126104565760208101519067ffffffffffffffff821161045657019080601f8301121561045657815190611c3e82611e88565b92611c4c6040519485611e35565b828452602084019160208460051b83010111610456579060208201915b60208460051b8201018310611c835750505050908b611869565b6020808093611c9186611f58565b8152019301929150611c69565b9092506020813d602011611cd9575b81611cba60209383611e35565b81010312610456575165ffffffffffff8116810361045657918a61181e565b3d9150611cad565b604051637c11cc5760e01b8152600490fd5b9092506020813d602011611d27575b81611d0f60209383611e35565b8101031261045657611d2090611f58565b918561164d565b3d9150611d02565b9092506020813d602011611d66575b81611d4b60209383611e35565b8101031261045657611d5f61163191611f58565b92906115c7565b3d9150611d3e565b604051630fb287f360e21b8152600490fd5b909160248360051b8360043501010135908181105f14611dae575f52602052600160405f205b920190611535565b905f52602052600160405f20611da6565b604051632b5ca47d60e01b8152600490fd5b602435906001600160a01b038216820361045657565b600435906001600160a01b038216820361045657565b60a0810190811067ffffffffffffffff82111761040257604052565b6040810190811067ffffffffffffffff82111761040257604052565b90601f8019910116810190811067ffffffffffffffff82111761040257604052565b67ffffffffffffffff811161040257601f01601f191660200190565b6004359065ffffffffffff8216820361045657565b67ffffffffffffffff81116104025760051b60200190565b9080601f83011215610456576020908235611eba81611e88565b93611ec86040519586611e35565b81855260208086019260051b82010192831161045657602001905b828210611ef1575050505090565b81356001600160a01b0381168103610456578152908301908301611ee3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3565ffffffffffff811681036104565790565b3563ffffffff811681036104565790565b51906001600160a01b038216820361045657565b8051821015611f805760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b9190918054831015611f80575f526006600560205f208185040193060290565b91908203918211611b0157565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006002815414611ff15760029055565b604051633ee5aeb560e01b8152600490fd5b6001600160a01b03165f8181527ff2fe6b5e557999bc60d5eba037d79a45648a7185f0244db09a55888ed6367a2e60205260409020547fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f009060ff16156120695750505f90565b5f805260205260405f20815f5260205260405f20600160ff1982541617905533905f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b90815f527fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f00806020526001600160a01b0360405f20921691825f5260205260ff60405f20541615612106575050505f90565b825f5260205260405f20815f5260205260405f20600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b90815f527fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f00806020526001600160a01b0360405f20921691825f5260205260ff60405f2054166121a1575050505f90565b825f5260205260405f20815f5260205260405f2060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b63ffffffff60e01b5f3516805f527fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f01908160205260405f20545f527fbe09a78a256419d2b885312b60a13e8082d8ab3c36c463fff4fbb086f1e96f0060205260405f20335f5260205260ff60405f20541615612262575050565b5f90815260209190915260409081902054905163e2517d3f60e01b81523360048201526024810191909152604490fd5b6001600160a01b0316156122a257565b604051630206c52f60e31b8152600490fd5b90808202905f1981840990828083109203918083039214612323576127109082821115612311577fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e91940990828211900360fc1b910360041c170290565b634e487b715f5260116020526024601cfd5b505061271091500490565b91818302915f19818509938380861095039480860395146123b957848311156123a15790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b82634e487b715f52156003026011186020526024601cfd5b5050809250156123c7570490565b634e487b7160e01b5f52601260045260245ffd5b906123e582611e88565b6123f26040519182611e35565b8281528092612403601f1991611e88565b0190602036910137565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561243c57565b604051631afcd79f60e31b8152600490fd5b905f602091828151910182855af115610462575f513d61249f57506001600160a01b0381163b155b61247d5750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b60011415612476565b906124cf57508051156124bd57805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580612502575b6124e0575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156124d856fea2646970667358221220aa25f885e367f410b5495af18fd3f7a1df3940474cf3fcb9af56f2854c7feb8264736f6c634300081900330000000000000000000000008c1a46d032b7b30d9ab4f30e51d8139cc3e85ce3000000000000000000000000d7dc9b366c027743d90761f71858bca83c6899ad