0 txs
261 calls
constructor
constructor(address _avsDirectory, address _registryCoordinator, address _stakeRegistry)
functions
aggregator
viewfunction aggregator() view returns (address)
allTaskHashes
viewfunction allTaskHashes(uint32) view returns (bytes32)
allTaskResponses
viewfunction allTaskResponses(uint32) view returns (bytes32)
avsDirectory
viewfunction avsDirectory() view returns (address)
blsApkRegistry
viewfunction blsApkRegistry() view returns (address)
checkSignatures
viewfunction checkSignatures(bytes32 msgHash, bytes quorumNumbers, uint32 referenceBlockNumber, tuple params) view returns (tuple, bytes32)
delegation
viewfunction delegation() view returns (address)
generator
viewfunction generator() view returns (address)
getOperatorRestakedStrategies
viewfunction getOperatorRestakedStrategies(address operator) view returns (address[])
getRestakeableStrategies
viewfunction getRestakeableStrategies() view returns (address[])
latestTaskNum
viewfunction latestTaskNum() view returns (uint32)
operatorWhitelist
viewfunction operatorWhitelist(address) view returns (bool)
owner
viewfunction owner() view returns (address)
registryCoordinator
viewfunction registryCoordinator() view returns (address)
stakeRegistry
viewfunction stakeRegistry() view returns (address)
staleStakesForbidden
viewfunction staleStakesForbidden() view returns (bool)
TASK_RESPONSE_WINDOW_BLOCK
viewfunction TASK_RESPONSE_WINDOW_BLOCK() view returns (uint32)
taskNumber
viewfunction taskNumber() view returns (uint32)
trySignatureAndApkVerification
viewfunction trySignatureAndApkVerification(bytes32 msgHash, tuple apk, tuple apkG2, tuple sigma) view returns (bool pairingSuccessful, bool siganatureIsValid)
whitelistEnabled
viewfunction whitelistEnabled() view returns (bool)
addOperatorsToWhitelist
nonpayablefunction addOperatorsToWhitelist(address[] operators)
createNewTask
nonpayablefunction createNewTask(string taskDetails, uint32 quorumThresholdPercentage, bytes quorumNumbers)
deregisterOperatorFromAVS
nonpayablefunction deregisterOperatorFromAVS(address operator)
initialize
nonpayablefunction initialize(address initialOwner, address _aggregator, address _generator)
registerOperatorToAVS
nonpayablefunction registerOperatorToAVS(address operator, tuple operatorSignature)
removeOperatorsFromWhitelist
nonpayablefunction removeOperatorsFromWhitelist(address[] operators)
renounceOwnership
nonpayablefunction renounceOwnership()
respondToTask
nonpayablefunction respondToTask(tuple task, tuple taskResponse, tuple nonSignerStakesAndSignature)
setAggregator
nonpayablefunction setAggregator(address _aggregator)
setGenerator
nonpayablefunction setGenerator(address _generator)
setStaleStakesForbidden
nonpayablefunction setStaleStakesForbidden(bool value)
setWhitelistEnabled
nonpayablefunction setWhitelistEnabled(bool _whitelistEnabled)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateAVSMetadataURI
nonpayablefunction updateAVSMetadataURI(string _metadataURI)
events
Initialized
event Initialized(uint8 version)
NewTaskCreated
event NewTaskCreated(uint32 indexed taskIndex, (string taskDetails, uint32 taskCreatedBlock, bytes quorumNumbers, uint32 quorumThresholdPercentage) task)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
StaleStakesForbiddenUpdate
event StaleStakesForbiddenUpdate(bool value)
TaskCompleted
event TaskCompleted(uint32 indexed taskIndex)
TaskResponded
event TaskResponded((uint32 referenceTaskIndex, string taskResponse) taskResponse, (uint32 taskRespondedBlock, bytes32 hashOfNonSigners) taskResponseMetadata)
errors
No errors.
creation bytecode
0x6101606040523480156200001257600080fd5b5060405162004c8d38038062004c8d8339810160408190526200003591620002d7565b82828284806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b891906200032b565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013691906200032b565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000190573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b691906200032b565b6001600160a01b0390811660e0526000805460ff19166001179055848116610140528381166101005282166101205250620001f0620001fc565b50505050505062000352565b603254610100900460ff1615620002695760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620002bc576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002d457600080fd5b50565b600080600060608486031215620002ed57600080fd5b8351620002fa81620002be565b60208501519093506200030d81620002be565b60408501519092506200032081620002be565b809150509250925092565b6000602082840312156200033e57600080fd5b81516200034b81620002be565b9392505050565b60805160a05160c05160e05161010051610120516101405161484662000447600039600081816103ab01528181611dae015281816132e201526133b601526000818161097f01528181610ad001528181610b67015281816126c60152818161283f01526128de0152600081816107aa01528181610839015281816108b9015281816126010152818161279a0152818161328e015261335a0152600081816104f801526114ba015260008181610360015261169c015260008181610387015281816118720152611a340152600081816103d401528181610c360152818161118d01528181611325015261155701526148466000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806372d18e8d1161011a578063b98d0908116100ad578063df5cf7231161007c578063df5cf723146104f3578063e03c86321461051a578063e481af9d1461053d578063f2fde38b14610545578063f9120af61461055857600080fd5b8063b98d0908146104ad578063c0c53b8b146104ba578063d07241f0146104cd578063d822af3c146104e057600080fd5b80639926ee7d116100e95780639926ee7d14610461578063a364f4da14610474578063a98fb35514610487578063b00b6c0a1461049a57600080fd5b806372d18e8d1461041f5780637afa1eed1461042d5780638b00ce7c146104405780638da5cb5b1461045057600080fd5b8063416c7e5e1161019d578063683048351161016c57806368304835146103825780636b3aa72e146103a95780636d14a987146103cf5780636efb4636146103f6578063715018a61461041757600080fd5b8063416c7e5e146103185780634a7c7e4b1461032b57806351fb012d1461033e5780635df459461461035b57600080fd5b8063245a7bfc116101d9578063245a7bfc1461027f5780632cb223d5146102aa5780632d89f6fc146102d857806333cfb7b7146102f857600080fd5b8063052d9e7e1461020b578063171f1d5b146102205780631ad431891461024f5780631be4b9f71461026c575b600080fd5b61021e6102193660046137dd565b61056b565b005b61023361022e366004613972565b610586565b6040805192151583529015156020830152015b60405180910390f35b610257606481565b60405163ffffffff9091168152602001610246565b61021e61027a3660046139c3565b610710565b60cc54610292906001600160a01b031681565b6040516001600160a01b039091168152602001610246565b6102ca6102b8366004613a4b565b60cb6020526000908152604090205481565b604051908152602001610246565b6102ca6102e6366004613a4b565b60ca6020526000908152604090205481565b61030b610306366004613a82565b610785565b6040516102469190613a9f565b61021e6103263660046137dd565b610c34565b61021e610339366004613a82565b610dae565b60cf5461034b9060ff1681565b6040519015158152602001610246565b6102927f000000000000000000000000000000000000000000000000000000000000000081565b6102927f000000000000000000000000000000000000000000000000000000000000000081565b7f0000000000000000000000000000000000000000000000000000000000000000610292565b6102927f000000000000000000000000000000000000000000000000000000000000000081565b610409610404366004613dde565b610dd8565b604051610246929190613ea9565b61021e611cd4565b60c95463ffffffff16610257565b60cd54610292906001600160a01b031681565b60c9546102579063ffffffff1681565b6065546001600160a01b0316610292565b61021e61046f366004613f49565b611ce8565b61021e610482366004613a82565b611d3a565b61021e610495366004613ff3565b611d8f565b61021e6104a8366004614043565b611e18565b60005461034b9060ff1681565b61021e6104c83660046140c6565b611ff1565b61021e6104db366004614111565b612136565b61021e6104ee3660046139c3565b612594565b6102927f000000000000000000000000000000000000000000000000000000000000000081565b61034b610528366004613a82565b60ce6020526000908152604090205460ff1681565b61030b6125fb565b61021e610553366004613a82565b6129a7565b61021e610566366004613a82565b612a20565b610573612a4a565b60cf805460ff1916911515919091179055565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106105ce576105ce6141a8565b60200201518951600160200201518a602001516000600281106105f3576105f36141a8565b60200201518b6020015160016002811061060f5761060f6141a8565b602090810291909101518c518d83015160405161066c9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61068f91906141be565b90506107026106a86106a18884612aa4565b8690612b35565b6106b0612bca565b6106f86106e9856106e3604080518082018252600080825260209182015281518083019092526001825260029082015290565b90612aa4565b6106f28c612c8a565b90612b35565b886201d4c0612d19565b909890975095505050505050565b610718612a4a565b60005b8181101561078057600160ce600085858581811061073b5761073b6141a8565b90506020020160208101906107509190613a82565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905560010161071b565b505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081591906141e0565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a491906141f9565b90506001600160c01b038116158061093e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190614222565b60ff16155b1561095a57505060408051600081526020810190915292915050565b600061096e826001600160c01b0316612f33565b90506000805b8251811015610a3a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106109be576109be6141a8565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2691906141e0565b610a30908361425b565b9150600101610974565b506000816001600160401b03811115610a5557610a556137ff565b604051908082528060200260200182016040528015610a7e578160200160208202803683370190505b5090506000805b8451811015610c27576000858281518110610aa257610aa26141a8565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3b91906141e0565b905060005b81811015610c1c576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd99190614285565b60000151868681518110610bef57610bef6141a8565b6001600160a01b039092166020928302919091019091015284610c11816142c4565b955050600101610b40565b505050600101610a85565b5090979650505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb691906142dd565b6001600160a01b0316336001600160a01b031614610d675760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6000805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b610db6612a4a565b60cd80546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152606080825260208201526000848103610e515760405162461bcd60e51b815260206004820152603760248201526000805160206147f183398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610d5e565b60408301515185148015610e69575060a08301515185145b8015610e79575060c08301515185145b8015610e89575060e08301515185145b610ef35760405162461bcd60e51b815260206004820152604160248201526000805160206147f183398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610d5e565b82515160208401515114610f6b5760405162461bcd60e51b8152602060048201526044602482018190526000805160206147f1833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610d5e565b4363ffffffff168463ffffffff1610610fda5760405162461bcd60e51b815260206004820152603c60248201526000805160206147f183398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610d5e565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b0381111561101b5761101b6137ff565b604051908082528060200260200182016040528015611044578160200160208202803683370190505b506020820152866001600160401b03811115611062576110626137ff565b60405190808252806020026020018201604052801561108b578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b038111156110bf576110bf6137ff565b6040519080825280602002602001820160405280156110e8578160200160208202803683370190505b5081526020860151516001600160401b03811115611108576111086137ff565b604051908082528060200260200182016040528015611131578160200160208202803683370190505b50816020018190525060006112038a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa1580156111da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fe9190614222565b612ff5565b905060005b8760200151518110156114945761124d8860200151828151811061122e5761122e6141a8565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611263576112636141a8565b602090810291909101015280156113235760208301516112846001836142fa565b81518110611294576112946141a8565b602002602001015160001c836020015182815181106112b5576112b56141a8565b602002602001015160001c11611323576040805162461bcd60e51b81526020600482015260248101919091526000805160206147f183398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610d5e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110611368576113686141a8565b60200260200101518b8b600001518581518110611387576113876141a8565b60200260200101516040518463ffffffff1660e01b81526004016113c49392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa1580156113e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140591906141f9565b6001600160c01b031683600001518281518110611424576114246141a8565b60200260200101818152505061148a6106a161145e8486600001518581518110611450576114506141a8565b602002602001015116613088565b8a602001518481518110611474576114746141a8565b60200260200101516130b390919063ffffffff16565b9450600101611208565b505061149f83613196565b6000805491945060ff90911690816114b857600061153a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a91906141e0565b905060005b8a811015611ba357821561169a578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110611596576115966141a8565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa1580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fa91906141e0565b611604919061425b565b1161169a5760405162461bcd60e51b815260206004820152606660248201526000805160206147f183398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610d5e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d848181106116db576116db6141a8565b9050013560f81c60f81b60f81c8c8c60a0015185815181106116ff576116ff6141a8565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f919061430d565b6001600160401b0319166117a28a60400151838151811061122e5761122e6141a8565b67ffffffffffffffff19161461183e5760405162461bcd60e51b815260206004820152606160248201526000805160206147f183398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610d5e565b61186e89604001518281518110611857576118576141a8565b602002602001015187612b3590919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106118b1576118b16141a8565b9050013560f81c60f81b60f81c8c8c60c0015185815181106118d5576118d56141a8565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611931573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119559190614338565b8560200151828151811061196b5761196b6141a8565b6001600160601b03909216602092830291909101820152850151805182908110611997576119976141a8565b6020026020010151856000015182815181106119b5576119b56141a8565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a6020015151811015611b9957611a2d866000015182815181106119ff576119ff6141a8565b60200260200101518f8f86818110611a1957611a196141a8565b600192013560f81c9290921c811614919050565b15611b91577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f86818110611a7357611a736141a8565b9050013560f81c60f81b60f81c8e89602001518581518110611a9757611a976141a8565b60200260200101518f60e001518881518110611ab557611ab56141a8565b60200260200101518781518110611ace57611ace6141a8565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015611b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b569190614338565b8751805185908110611b6a57611b6a6141a8565b60200260200101818151611b7e9190614353565b6001600160601b03169052506001909101905b6001016119d9565b505060010161153f565b505050600080611bbd8c868a606001518b60800151610586565b9150915081611c2e5760405162461bcd60e51b815260206004820152604360248201526000805160206147f183398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610d5e565b80611c8f5760405162461bcd60e51b815260206004820152603960248201526000805160206147f183398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610d5e565b50506000878260200151604051602001611caa92919061437a565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611cdc612a4a565b611ce66000613231565b565b60cf54829060ff161580611d1457506001600160a01b038116600090815260ce602052604090205460ff165b611d305760405162461bcd60e51b8152600401610d5e906143c2565b6107808383613283565b60cf54819060ff161580611d6657506001600160a01b038116600090815260ce602052604090205460ff165b611d825760405162461bcd60e51b8152600401610d5e906143c2565b611d8b8261334f565b5050565b611d97612a4a565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611de390849060040161445a565b600060405180830381600087803b158015611dfd57600080fd5b505af1158015611e11573d6000803e3d6000fd5b5050505050565b60cd546001600160a01b03163314611e905760405162461bcd60e51b815260206004820152603560248201527f436861696e62617365536572766963654d616e616765723a2067656e6572617460448201527437b91036bab9ba103132903a34329031b0b63632b960591b6064820152608401610d5e565b60408051608081018252606080825260006020830181905292820181905281019190915285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525063ffffffff438116602080840191909152908516606083015260408051601f850183900483028101830190915283815290849084908190840183828082843760009201919091525050505060408083019190915251611f5090829060200161446d565b60408051601f19818403018152828252805160209182012060c9805463ffffffff908116600090815260ca90945293909220555416907fb456431ed13b80d91ab280ac82018e48afde7e840d354010364822d75691447990611fb390849061446d565b60405180910390a260c954611fcf9063ffffffff1660016144d4565b60c9805463ffffffff191663ffffffff92909216919091179055505050505050565b603254610100900460ff16158080156120115750603254600160ff909116105b8061202b5750303b15801561202b575060325460ff166001145b61208e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d5e565b6032805460ff1916600117905580156120b1576032805461ff0019166101001790555b6120ba846133e5565b60cc80546001600160a01b038086166001600160a01b03199283161790925560cd8054928516929091169190911790558015612130576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60cc546001600160a01b031633146121af5760405162461bcd60e51b815260206004820152603660248201527f436861696e62617365536572766963654d616e616765723a20616767726567616044820152753a37b91036bab9ba103132903a34329031b0b63632b960511b6064820152608401610d5e565b60006121c16040850160208601613a4b565b90503660006121d360408701876144f1565b909250905060006121ea6080880160608901613a4b565b905060ca60006121fd6020890189613a4b565b63ffffffff1663ffffffff168152602001908152602001600020548760405160200161222991906145a5565b60405160208183030381529060405280519060200120146122d15760405162461bcd60e51b815260206004820152605660248201527f436861696e62617365536572766963654d616e616765723a20737570706c696560448201527f64207461736b20646f6573206e6f74206d6174636820746865206f6e6520726560648201527518dbdc991959081a5b881d1a194818dbdb9d1c9858dd60521b608482015260a401610d5e565b600060cb816122e360208a018a613a4b565b63ffffffff1663ffffffff168152602001908152602001600020541461237f5760405162461bcd60e51b815260206004820152604560248201527f436861696e62617365536572766963654d616e616765723a206167677265676160448201527f746f722068617320616c726561647920726573706f6e64656420746f20746865606482015264207461736b60d81b608482015260a401610d5e565b600086604051602001612392919061466c565b6040516020818303038152906040528051906020012090506000806123ba8387878a8c610dd8565b9150915060005b858110156124d6578463ffffffff16836020015182815181106123e6576123e66141a8565b60200260200101516123f8919061467f565b6001600160601b0316606484600001518381518110612419576124196141a8565b60200260200101516001600160601b031661243491906146a2565b10156124ce5760405162461bcd60e51b815260206004820152605960248201527f436861696e62617365536572766963654d616e616765723a207369676e61746f60448201527f7269657320646f206e6f74206f776e206174206c65617374207468726573686f60648201527f6c642070657263656e74616765206f6620612071756f72756d00000000000000608482015260a401610d5e565b6001016123c1565b5060408051808201825263ffffffff43168152602080820184905291519091612503918c918491016146b9565b6040516020818303038152906040528051906020012060cb60008c60000160208101906125309190613a4b565b63ffffffff1663ffffffff168152602001908152602001600020819055507fd0e833257cf2514f7f416921130672e0a5099b141e19ad5285b881ec34e9eb548a8260405161257f9291906146b9565b60405180910390a15050505050505050505050565b61259c612a4a565b60005b818110156107805760ce60008484848181106125bd576125bd6141a8565b90506020020160208101906125d29190613a82565b6001600160a01b031681526020810191909152604001600020805460ff1916905560010161259f565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561265d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126819190614222565b60ff169050806000036126a257505060408051600081526020810190915290565b6000805b8281101561274d57604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612715573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273991906141e0565b612743908361425b565b91506001016126a6565b506000816001600160401b03811115612768576127686137ff565b604051908082528060200260200182016040528015612791578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281a9190614222565b60ff1681101561299d57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa15801561288e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b291906141e0565b905060005b81811015612993576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa15801561292c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129509190614285565b60000151858581518110612966576129666141a8565b6001600160a01b039092166020928302919091019091015283612988816142c4565b9450506001016128b7565b5050600101612798565b5090949350505050565b6129af612a4a565b6001600160a01b038116612a145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d5e565b612a1d81613231565b50565b612a28612a4a565b60cc80546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b03163314611ce65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5e565b6040805180820190915260008082526020820152612ac0613703565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080612aef57fe5b5080612b2d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610d5e565b505092915050565b6040805180820190915260008082526020820152612b51613721565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080612b8c57fe5b5080612b2d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610d5e565b612bd261373f565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080612cba6000805160206147d1833981519152866141be565b90505b612cc681613450565b90935091506000805160206147d18339815191528283098303612cff576040805180820190915290815260208101919091529392505050565b6000805160206147d1833981519152600182089050612cbd565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190612d4b613764565b60005b6002811015612f06576000612d648260066146a2565b9050848260028110612d7857612d786141a8565b60200201515183612d8a83600061425b565b600c8110612d9a57612d9a6141a8565b6020020152848260028110612db157612db16141a8565b60200201516020015183826001612dc8919061425b565b600c8110612dd857612dd86141a8565b6020020152838260028110612def57612def6141a8565b6020020151515183612e0283600261425b565b600c8110612e1257612e126141a8565b6020020152838260028110612e2957612e296141a8565b6020020151516001602002015183612e4283600361425b565b600c8110612e5257612e526141a8565b6020020152838260028110612e6957612e696141a8565b602002015160200151600060028110612e8457612e846141a8565b602002015183612e9583600461425b565b600c8110612ea557612ea56141a8565b6020020152838260028110612ebc57612ebc6141a8565b602002015160200151600160028110612ed757612ed76141a8565b602002015183612ee883600561425b565b600c8110612ef857612ef86141a8565b602002015250600101612d4e565b50612f0f613783565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6060600080612f4184613088565b61ffff166001600160401b03811115612f5c57612f5c6137ff565b6040519080825280601f01601f191660200182016040528015612f86576020820181803683370190505b5090506000805b825182108015612f9e575061010081105b1561299d576001811b935085841615612fe5578060f81b838381518110612fc757612fc76141a8565b60200101906001600160f81b031916908160001a9053508160010191505b612fee816142c4565b9050612f8d565b600080613001846134d2565b9050808360ff166001901b1161307f5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610d5e565b90505b92915050565b6000805b82156130825761309d6001846142fa565b90921691806130ab816146ec565b91505061308c565b60408051808201909152600080825260208201526102008261ffff161061310f5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610d5e565b8161ffff16600103613122575081613082565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061318b57600161ffff871660ff83161c8116900361316e5761316b8484612b35565b93505b6131788384612b35565b92506201fffe600192831b16910161313e565b509195945050505050565b604080518082019091526000808252602082015281511580156131bb57506020820151155b156131d9575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206147d1833981519152846020015161320c91906141be565b613224906000805160206147d18339815191526142fa565b905292915050565b919050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146132cb5760405162461bcd60e51b8152600401610d5e9061470d565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906133199085908590600401614785565b600060405180830381600087803b15801561333357600080fd5b505af1158015613347573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146133975760405162461bcd60e51b8152600401610d5e9061470d565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401611de3565b603254610100900460ff16612a145760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d5e565b600080806000805160206147d183398151915260036000805160206147d1833981519152866000805160206147d18339815191528889090908905060006134c6827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206147d183398151915261365a565b91959194509092505050565b60006101008251111561355b5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610d5e565b815160000361356c57506000919050565b60008083600081518110613582576135826141a8565b0160200151600160f89190911c81901b92505b8451811015613651578481815181106135b0576135b06141a8565b0160200151600160f89190911c1b91508282116136455760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610d5e565b91811791600101613595565b50909392505050565b600080613665613783565b61366d6137a1565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806136aa57fe5b50826136f85760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610d5e565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806137526137bf565b815260200161375f6137bf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6000602082840312156137ef57600080fd5b8135801515811461307f57600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613837576138376137ff565b60405290565b60405161010081016001600160401b0381118282101715613837576138376137ff565b604051606081016001600160401b0381118282101715613837576138376137ff565b604051601f8201601f191681016001600160401b03811182821017156138aa576138aa6137ff565b604052919050565b6000604082840312156138c457600080fd5b6138cc613815565b9050813581526020820135602082015292915050565b600082601f8301126138f357600080fd5b6138fb613815565b80604084018581111561390d57600080fd5b845b8181101561392757803584526020938401930161390f565b509095945050505050565b60006080828403121561394457600080fd5b61394c613815565b905061395883836138e2565b815261396783604084016138e2565b602082015292915050565b600080600080610120858703121561398957600080fd5b8435935061399a86602087016138b2565b92506139a98660608701613932565b91506139b88660e087016138b2565b905092959194509250565b600080602083850312156139d657600080fd5b82356001600160401b03808211156139ed57600080fd5b818501915085601f830112613a0157600080fd5b813581811115613a1057600080fd5b8660208260051b8501011115613a2557600080fd5b60209290920196919550909350505050565b803563ffffffff8116811461322c57600080fd5b600060208284031215613a5d57600080fd5b613a6682613a37565b9392505050565b6001600160a01b0381168114612a1d57600080fd5b600060208284031215613a9457600080fd5b813561307f81613a6d565b6020808252825182820181905260009190848201906040850190845b81811015613ae05783516001600160a01b031683529284019291840191600101613abb565b50909695505050505050565b60008083601f840112613afe57600080fd5b5081356001600160401b03811115613b1557600080fd5b602083019150836020828501011115613b2d57600080fd5b9250929050565b60006001600160401b03821115613b4d57613b4d6137ff565b5060051b60200190565b600082601f830112613b6857600080fd5b81356020613b7d613b7883613b34565b613882565b8083825260208201915060208460051b870101935086841115613b9f57600080fd5b602086015b84811015613bc257613bb581613a37565b8352918301918301613ba4565b509695505050505050565b600082601f830112613bde57600080fd5b81356020613bee613b7883613b34565b8083825260208201915060208460061b870101935086841115613c1057600080fd5b602086015b84811015613bc257613c2788826138b2565b835291830191604001613c15565b600082601f830112613c4657600080fd5b81356020613c56613b7883613b34565b82815260059290921b84018101918181019086841115613c7557600080fd5b8286015b84811015613bc25780356001600160401b03811115613c985760008081fd5b613ca68986838b0101613b57565b845250918301918301613c79565b60006101808284031215613cc757600080fd5b613ccf61383d565b905081356001600160401b0380821115613ce857600080fd5b613cf485838601613b57565b83526020840135915080821115613d0a57600080fd5b613d1685838601613bcd565b60208401526040840135915080821115613d2f57600080fd5b613d3b85838601613bcd565b6040840152613d4d8560608601613932565b6060840152613d5f8560e086016138b2565b6080840152610120840135915080821115613d7957600080fd5b613d8585838601613b57565b60a0840152610140840135915080821115613d9f57600080fd5b613dab85838601613b57565b60c0840152610160840135915080821115613dc557600080fd5b50613dd284828501613c35565b60e08301525092915050565b600080600080600060808688031215613df657600080fd5b8535945060208601356001600160401b0380821115613e1457600080fd5b613e2089838a01613aec565b9096509450849150613e3460408901613a37565b93506060880135915080821115613e4a57600080fd5b50613e5788828901613cb4565b9150509295509295909350565b60008151808452602080850194506020840160005b83811015613e9e5781516001600160601b031687529582019590820190600101613e79565b509495945050505050565b6040815260008351604080840152613ec46080840182613e64565b90506020850151603f19848303016060850152613ee18282613e64565b925050508260208301529392505050565b60006001600160401b03831115613f0b57613f0b6137ff565b613f1e601f8401601f1916602001613882565b9050828152838383011115613f3257600080fd5b828260208301376000602084830101529392505050565b60008060408385031215613f5c57600080fd5b8235613f6781613a6d565b915060208301356001600160401b0380821115613f8357600080fd5b9084019060608287031215613f9757600080fd5b613f9f613860565b823582811115613fae57600080fd5b83019150601f82018713613fc157600080fd5b613fd087833560208501613ef2565b815260208301356020820152604083013560408201528093505050509250929050565b60006020828403121561400557600080fd5b81356001600160401b0381111561401b57600080fd5b8201601f8101841361402c57600080fd5b61403b84823560208401613ef2565b949350505050565b60008060008060006060868803121561405b57600080fd5b85356001600160401b038082111561407257600080fd5b61407e89838a01613aec565b909750955085915061409260208901613a37565b945060408801359150808211156140a857600080fd5b506140b588828901613aec565b969995985093965092949392505050565b6000806000606084860312156140db57600080fd5b83356140e681613a6d565b925060208401356140f681613a6d565b9150604084013561410681613a6d565b809150509250925092565b60008060006060848603121561412657600080fd5b83356001600160401b038082111561413d57600080fd5b908501906080828803121561415157600080fd5b9093506020850135908082111561416757600080fd5b908501906040828803121561417b57600080fd5b9092506040850135908082111561419157600080fd5b5061419e86828701613cb4565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b6000826141db57634e487b7160e01b600052601260045260246000fd5b500690565b6000602082840312156141f257600080fd5b5051919050565b60006020828403121561420b57600080fd5b81516001600160c01b038116811461307f57600080fd5b60006020828403121561423457600080fd5b815160ff8116811461307f57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561308257613082614245565b80516001600160601b038116811461322c57600080fd5b60006040828403121561429757600080fd5b61429f613815565b82516142aa81613a6d565b81526142b86020840161426e565b60208201529392505050565b6000600182016142d6576142d6614245565b5060010190565b6000602082840312156142ef57600080fd5b815161307f81613a6d565b8181038181111561308257613082614245565b60006020828403121561431f57600080fd5b815167ffffffffffffffff198116811461307f57600080fd5b60006020828403121561434a57600080fd5b613a668261426e565b6001600160601b0382811682821603908082111561437357614373614245565b5092915050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b838110156143b557815185529382019390820190600101614399565b5092979650505050505050565b60208082526032908201527f436861696e62617365536572766963654d616e616765723a206f70657261746f6040820152711c881b9bdd081a5b881dda1a5d195b1a5cdd60721b606082015260800190565b6000815180845260005b8181101561443a5760208185018101518683018201520161441e565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000613a666020830184614414565b60208152600082516080602084015261448960a0840182614414565b9050602084015163ffffffff808216604086015260408601519150601f198584030160608601526144ba8383614414565b925080606087015116608086015250508091505092915050565b63ffffffff81811683821601908082111561437357614373614245565b6000808335601e1984360301811261450857600080fd5b8301803591506001600160401b0382111561452257600080fd5b602001915036819003821315613b2d57600080fd5b6000808335601e1984360301811261454e57600080fd5b83016020810192503590506001600160401b0381111561456d57600080fd5b803603821315613b2d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006145b58384614537565b608060208501526145ca60a08501828461457c565b9150506145d960208501613a37565b63ffffffff80821660408601526145f36040870187614537565b868503601f19016060880152925061460c84848361457c565b9350508061461c60608801613a37565b16608086015250508091505092915050565b63ffffffff61463c82613a37565b168252600061464e6020830183614537565b6040602086015261466360408601828461457c565b95945050505050565b602081526000613a66602083018461462e565b6001600160601b03818116838216028082169190828114612b2d57612b2d614245565b808202811582820484141761308257613082614245565b6060815260006146cc606083018561462e565b905063ffffffff8351166020830152602083015160408301529392505050565b600061ffff80831681810361470357614703614245565b6001019392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b60018060a01b03831681526040602082015260008251606060408401526147af60a0840182614414565b9050602084015160608401526040840151608084015280915050939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220227cf5afb5447fc687105acd5df450c623cbdb60c63f15e422a35eb3ec70e01e64736f6c63430008180033000000000000000000000000135dda560e946695d6f155dacafc6f1f25c1f5af00000000000000000000000028c486660aff4c3ffc671cb72ff36fea214e8de1000000000000000000000000f139a704063f85c91089face6eeaa13a78f46d1b