diff --git a/contracts/.gas-snapshot b/contracts/.gas-snapshot index 0001ce1f1..3fe2784fd 100644 --- a/contracts/.gas-snapshot +++ b/contracts/.gas-snapshot @@ -2,8 +2,14 @@ FeeOracleV1_Test:test_feeFor_succeeds() (gas: 38619) FeeOracleV1_Test:test_setFee_nonOwner_reverts() (gas: 20220) FeeOracleV1_Test:test_setFee_succeeds() (gas: 30824) FeeOracleV1_Test:test_setFee_zero_reverts() (gas: 20212) +OmniAVS_admin_Test:test_avsDirectory_succeeds() (gas: 14980) OmniAVS_admin_Test:test_deregisterOperator_byOwner_succeeds() (gas: 334360) OmniAVS_admin_Test:test_deregisterOperator_whenPaused_reverts() (gas: 69783) +OmniAVS_admin_Test:test_getOPeratorRestakedStrategies_notOperator_succeeds() (gas: 42527) +OmniAVS_admin_Test:test_getOperatorRestakedStrategies_noStrategies_succeeds() (gas: 308794) +OmniAVS_admin_Test:test_getOperatorRestakedStrategies_succeeds() (gas: 369484) +OmniAVS_admin_Test:test_getRestakeableStrategies_noStrategies_succeeds() (gas: 26237) +OmniAVS_admin_Test:test_getRestakeableStrategies_succeeds() (gas: 84514) OmniAVS_admin_Test:test_pause_byOwner_succeeds() (gas: 44775) OmniAVS_admin_Test:test_registerOperator_whenPaused_reverts() (gas: 70972) OmniAVS_admin_Test:test_setMetadataURI_notOwner_reverts() (gas: 18630) @@ -24,7 +30,7 @@ OmniAVS_allowlist_Test:test_removeFromAllowlist_succeeds() (gas: 109388) OmniAVS_allowlist_Test:test_setEthStakeInbox_notOwner_reverts() (gas: 18010) OmniAVS_allowlist_Test:test_setEthStakeInbox_succeeds() (gas: 26728) OmniAVS_allowlist_Test:test_setEthStakeInbox_zeroAddress_reverts() (gas: 20449) -OmniAVS_initialize_Test:test_initialize_defaultParams_succeeds() (gas: 2863545) +OmniAVS_initialize_Test:test_initialize_defaultParams_succeeds() (gas: 2804599) OmniAVS_syncWithOmni_Test:test_depositBeaconEth_succeeds() (gas: 475174) OmniPortal_admin_Test:test_setFeeOracle_nonOwner_reverts() (gas: 20322) OmniPortal_admin_Test:test_setFeeOracle_succeeds() (gas: 31835) diff --git a/contracts/bindings/avsdirectory.go b/contracts/bindings/avsdirectory.go index 9b21c78e8..32fc0db47 100644 --- a/contracts/bindings/avsdirectory.go +++ b/contracts/bindings/avsdirectory.go @@ -40,7 +40,7 @@ var ( // AVSDirectoryMetaData contains all meta data concerning the AVSDirectory contract. var AVSDirectoryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelSalt\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSMetadataURIUpdated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x60c06040523480156200001157600080fd5b5060405162001e5838038062001e58833981016040819052620000349162000117565b6001600160a01b0381166080526200004b62000056565b504660a05262000149565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000115576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012a57600080fd5b81516001600160a01b03811681146200014257600080fd5b9392505050565b60805160a051611ce2620001766000396000610ea801526000818161032401526109830152611ce26000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046117b2565b610387565b005b61015a61016a3660046117d6565b610443565b61015a61017d3660046117ef565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611830565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461185c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906118ab565b61015a6106ac565b6101ea61024b3660046118d3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611966565b610787565b6101a96102cd366004611a4d565b610b1a565b61015a6102e03660046117b2565b610bd3565b61015a6102f3366004611a93565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046117d6565b610d83565b61015a6103673660046117b2565b610e2e565b6101a9610ea4565b61015a6103823660046117d6565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611b05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611b22565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611b6c565b6104cb5760405162461bcd60e51b815260040161042e90611b8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611b6c565b6107345760405162461bcd60e51b815260040161042e90611b8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e611895565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611c8d8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611b6c565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906118ab565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c62611895565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906118ab565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611bd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611b05565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611b22565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611c05565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611c62565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d8161158b565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a611570878285856116d9565b94509450505050611584565b506000905060025b9250929050565b600081600481111561159f5761159f611895565b14156115a85750565b60018160048111156115bc576115bc611895565b141561160a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561161e5761161e611895565b141561166c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b600381600481111561168057611680611895565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117105750600090506003611794565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611764573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661178d57600060019250925050611794565b9150600090505b94509492505050565b6001600160a01b038116811461044057600080fd5b6000602082840312156117c457600080fd5b81356117cf8161179d565b9392505050565b6000602082840312156117e857600080fd5b5035919050565b60008060006060848603121561180457600080fd5b833561180f8161179d565b9250602084013561181f8161179d565b929592945050506040919091013590565b6000806040838503121561184357600080fd5b823561184e8161179d565b946020939093013593505050565b6000806040838503121561186f57600080fd5b823561187a8161179d565b9150602083013561188a8161179d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106118cd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156118e557600080fd5b813560ff811681146117cf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561192f5761192f6118f6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561195e5761195e6118f6565b604052919050565b6000806040838503121561197957600080fd5b82356119848161179d565b915060208381013567ffffffffffffffff808211156119a257600080fd5b90850190606082880312156119b657600080fd5b6119be61190c565b8235828111156119cd57600080fd5b8301601f810189136119de57600080fd5b8035838111156119f0576119f06118f6565b611a02601f8201601f19168701611935565b93508084528986828401011115611a1857600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611a6357600080fd5b8435611a6e8161179d565b93506020850135611a7e8161179d565b93969395505050506040820135916060013590565b60008060208385031215611aa657600080fd5b823567ffffffffffffffff80821115611abe57600080fd5b818501915085601f830112611ad257600080fd5b813581811115611ae157600080fd5b866020828501011115611af357600080fd5b60209290920196919550909350505050565b600060208284031215611b1757600080fd5b81516117cf8161179d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b7e57600080fd5b815180151581146117cf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611c3957858101830151858201606001528201611c1d565b81811115611c4b576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611c7457600080fd5b81516001600160e01b0319811681146117cf57600080fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212206af6ca688d1eceaad5b08fe4f2cba16c563d151dceab08f03d3250c39153365e64736f6c634300080c0033", + Bin: "0x60c06040523480156200001157600080fd5b5060405162001e5838038062001e58833981016040819052620000349162000117565b6001600160a01b0381166080526200004b62000056565b504660a05262000149565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000115576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012a57600080fd5b81516001600160a01b03811681146200014257600080fd5b9392505050565b60805160a051611ce2620001766000396000610ea801526000818161032401526109830152611ce26000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046117b2565b610387565b005b61015a61016a3660046117d6565b610443565b61015a61017d3660046117ef565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611830565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461185c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906118ab565b61015a6106ac565b6101ea61024b3660046118d3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611966565b610787565b6101a96102cd366004611a4d565b610b1a565b61015a6102e03660046117b2565b610bd3565b61015a6102f3366004611a93565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046117d6565b610d83565b61015a6103673660046117b2565b610e2e565b6101a9610ea4565b61015a6103823660046117d6565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611b05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611b22565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611b6c565b6104cb5760405162461bcd60e51b815260040161042e90611b8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611b6c565b6107345760405162461bcd60e51b815260040161042e90611b8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e611895565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611c8d8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611b6c565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906118ab565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c62611895565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906118ab565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611bd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611b05565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611b22565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611c05565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611c62565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d8161158b565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a611570878285856116d9565b94509450505050611584565b506000905060025b9250929050565b600081600481111561159f5761159f611895565b14156115a85750565b60018160048111156115bc576115bc611895565b141561160a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561161e5761161e611895565b141561166c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b600381600481111561168057611680611895565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117105750600090506003611794565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611764573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661178d57600060019250925050611794565b9150600090505b94509492505050565b6001600160a01b038116811461044057600080fd5b6000602082840312156117c457600080fd5b81356117cf8161179d565b9392505050565b6000602082840312156117e857600080fd5b5035919050565b60008060006060848603121561180457600080fd5b833561180f8161179d565b9250602084013561181f8161179d565b929592945050506040919091013590565b6000806040838503121561184357600080fd5b823561184e8161179d565b946020939093013593505050565b6000806040838503121561186f57600080fd5b823561187a8161179d565b9150602083013561188a8161179d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106118cd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156118e557600080fd5b813560ff811681146117cf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561192f5761192f6118f6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561195e5761195e6118f6565b604052919050565b6000806040838503121561197957600080fd5b82356119848161179d565b915060208381013567ffffffffffffffff808211156119a257600080fd5b90850190606082880312156119b657600080fd5b6119be61190c565b8235828111156119cd57600080fd5b8301601f810189136119de57600080fd5b8035838111156119f0576119f06118f6565b611a02601f8201601f19168701611935565b93508084528986828401011115611a1857600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611a6357600080fd5b8435611a6e8161179d565b93506020850135611a7e8161179d565b93969395505050506040820135916060013590565b60008060208385031215611aa657600080fd5b823567ffffffffffffffff80821115611abe57600080fd5b818501915085601f830112611ad257600080fd5b813581811115611ae157600080fd5b866020828501011115611af357600080fd5b60209290920196919550909350505050565b600060208284031215611b1757600080fd5b81516117cf8161179d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b7e57600080fd5b815180151581146117cf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611c3957858101830151858201606001528201611c1d565b81811115611c4b576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611c7457600080fd5b81516001600160e01b0319811681146117cf57600080fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220357ae0ebbbd5cff467b8031d418d71991e1379a4836ab611d82a77f612fa836964736f6c634300080c0033", } // AVSDirectoryABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/delegationmanager.go b/contracts/bindings/delegationmanager.go index 1b26a4aa9..3081c0e06 100644 --- a/contracts/bindings/delegationmanager.go +++ b/contracts/bindings/delegationmanager.go @@ -79,7 +79,7 @@ type IStrategyManagerDeprecatedStructWithdrawerAndNonce struct { // DelegationManagerMetaData contains all meta data concerning the DelegationManager contract. var DelegationManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_slasher\",\"type\":\"address\",\"internalType\":\"contractISlasher\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_WITHDRAWAL_DELAY_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateCurrentStakerDelegationDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateStakerDelegationDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_stakerNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManager.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"middlewareTimesIndexes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateTo\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateToBySignature\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegatedTo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApprover\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApproverSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"earningsReceiver\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDelegatableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawalDelay\",\"inputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_minWithdrawalDelayBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"_withdrawalDelayBlocks\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawalsToMigrate\",\"type\":\"tuple[]\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingWithdrawals\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManager.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"newMinWithdrawalDelayBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"withdrawalDelayBlocks\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerNonce\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerOptOutWindowBlocks\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"undelegate\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinWithdrawalDelayBlocksSet\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDetailsModified\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesDecreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesIncreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerForceUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyWithdrawalDelayBlocksSet\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalMigrated\",\"inputs\":[{\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false}]", - Bin: "0x6101006040523480156200001257600080fd5b50604051620060383803806200603883398101604081905262000035916200013f565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000193565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000124576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013c57600080fd5b50565b6000806000606084860312156200015557600080fd5b8351620001628162000126565b6020850151909350620001758162000126565b6040850151909250620001888162000126565b809150509250925092565b60805160a05160c05160e051615e096200022f60003960006126d80152600081816105e7015281816110ae0152818161142a01528181611d6c01528181612a31015281816140ea01526145d6015260006107d701526000818161052f0152818161107c015281816113f8015281816116ca01528181611e0001528181612afe01528181612c8101528181614210015261467c0152615e096000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614993565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d83660046149f9565b610a43565b6103f06103eb366004614993565b610b05565b60405161039a9190614a54565b61041061040b366004614af1565b610e6e565b005b610410610420366004614b44565b610fbe565b610410610433366004614b68565b611071565b610410610446366004614ba9565b611128565b610410610459366004614bc2565b611267565b61039061046c366004614b44565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614b68565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614c2d565b6112a9565b6104106104f2366004614b68565b6113ed565b610390610505366004614b44565b609b6020526000908152604090205481565b610410610525366004614cd4565b61149d565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039a565b610551610577366004614b44565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614b44565b611584565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6103906213c68081565b6104106115a4565b610390610629366004614ff3565b61166b565b6105ab61063c36600461502f565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046150a5565b61169b565b61055161067a366004614b44565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a6366004615205565b611946565b6104106106b9366004614ba9565b611996565b6105516106cc366004614b44565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614b44565b6119a7565b6104106119c7565b610390610710366004615294565b609860209081526000928352604080842090915290825290205481565b61041061073b366004615375565b6119db565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b610777610772366004615405565b611ae0565b60405161039a919061548f565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046154a2565b611bba565b6103906107c0366004614b44565b609f6020526000908152604090205481565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6105ab610807366004614ba9565b609e6020526000908152604090205460ff1681565b6105ab61082a3660046154d7565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614b44565b60a16020526000908152604090205481565b6108e3610881366004614b44565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b610390610927366004615503565b611c8c565b61039062034bc081565b610949610944366004614b44565b611d45565b60405161039a929190615584565b6103f0610965366004614b44565b6120fd565b6104106109783660046155a9565b6125c1565b61041061098b366004615601565b6125cd565b61041061099e366004614b44565b61265e565b6103906126d4565b6104106109b9366004614ba9565b612712565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e661561d565b90506020020160208101906109fb9190614b44565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615649565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac16126d4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b3190615664565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614d76565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb861561d565b9050602002810190610bca919061569b565b610bd89060208101906156bb565b9050878783818110610bec57610bec61561d565b9050602002810190610bfe919061569b565b610c0890806156bb565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c9061561d565b9050602002810190610ca2919061569b565b610cb3906060810190604001614b44565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d4661561d565b9050602002810190610d58919061569b565b610d69906060810190604001614b44565b8a8a86818110610d7b57610d7b61561d565b9050602002810190610d8d919061569b565b610d9790806156bb565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd61561d565b9050602002810190610def919061569b565b610dfd9060208101906156bb565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061286e92505050565b838281518110610e4657610e4661561d565b602090810291909101015280610e5b81615649565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612e2e565b604080518082019091526060815260006020820152610f3433808360006130ca565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d9190615704565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb0929190615756565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110359190615785565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906157a2565b61106e8161346f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110d05750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110ec5760405162461bcd60e51b8152600401610b31906157ec565b6110f583611584565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613566565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615849565b6111b05760405162461bcd60e51b8152600401610b3190615866565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f6135e1565b6111218484848461363b565b6001600160a01b0383166000908152609b60205260408120546112a085828686611c8c565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613859565b61137b61393f565b609755611387896139d6565b61139086613a28565b61139c8585858561363b565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061144c5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6114685760405162461bcd60e51b8152600401610b31906157ec565b61147183611584565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613b22565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b3190615664565b6114ce613b9d565b60005b88811015611579576115698a8a838181106114ee576114ee61561d565b905060200281019061150091906158ae565b8989848181106115125761151261561d565b905060200281019061152491906156bb565b8989868181106115365761153661561d565b9050602002013588888781811061154f5761154f61561d565b905060200201602081019061156491906158c4565b613bf7565b61157281615649565b90506114d1565b506113e2600160c955565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190615849565b61162c5760405162461bcd60e51b8152600401610b3190615866565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161167e9190615955565b604051602081830303815290604052805190602001209050919050565b60005b81518110156119425760008282815181106116bb576116bb61561d565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016117149190615968565b60408051808303816000875af1158015611732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117569190615a14565b915091508115611934576040808401516001600160a01b0381166000908152609f6020529182208054919282919061178d83615649565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff1681526020018760000151815260200187602001518152509050600061180d8261166b565b6000818152609e602052604090205490915060ff16156118a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906118ee9083908590615a42565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061169e565b5050565b6066546002906004908116141561196f5760405162461bcd60e51b8152600401610b3190615664565b611977613b9d565b6119848686868686613bf7565b61198e600160c955565b505050505050565b61199e6135e1565b61106e81613a28565b6001600160a01b0390811660009081526099602052604090205416151590565b6119cf6135e1565b6119d960006139d6565b565b4283602001511015611a5f5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611a9b8783888860200151611c8c565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611acb90889083906143e1565b611ad7878786866130ca565b50505050505050565b6060600082516001600160401b03811115611afd57611afd614d76565b604051908082528060200260200182016040528015611b26578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611b6457611b6461561d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611b9f57611b9f61561d565b6020908102919091010152611bb381615649565b9050611b2c565b611bc3336119a7565b611c455760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611c80929190615756565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611d026126d4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190615a5b565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611e49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e719190810190615acf565b9150915060008313611e8857909590945092505050565b606080835160001415611f42576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611efd57611efd61561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611f3157611f3161561d565b6020026020010181815250506120f0565b8351611f4f906001615b89565b6001600160401b03811115611f6657611f66614d76565b604051908082528060200260200182016040528015611f8f578160200160208202803683370190505b50915081516001600160401b03811115611fab57611fab614d76565b604051908082528060200260200182016040528015611fd4578160200160208202803683370190505b50905060005b845181101561206e57848181518110611ff557611ff561561d565b602002602001015183828151811061200f5761200f61561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120415761204161561d565b602002602001015182828151811061205b5761205b61561d565b6020908102919091010152600101611fda565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516120939190615ba1565b815181106120a3576120a361561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516120d39190615ba1565b815181106120e3576120e361561d565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121295760405162461bcd60e51b8152600401610b3190615664565b61213283611584565b6121b25760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b6121bb836119a7565b1561222e5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b0383166122aa5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a6020526040902054909116903314806122dd5750336001600160a01b038216145b8061230457506001600160a01b038181166000908152609960205260409020600101541633145b6123765760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061238286611d45565b9092509050336001600160a01b038716146123d857826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161245a5760408051600081526020810190915294506125b8565b81516001600160401b0381111561247357612473614d76565b60405190808252806020026020018201604052801561249c578160200160208202803683370190505b50945060005b82518110156125b6576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125025761250261561d565b60200260200101518260008151811061251d5761251d61561d565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061254f5761254f61561d565b60200260200101518160008151811061256a5761256a61561d565b60200260200101818152505061258389878b858561286e565b8884815181106125955761259561561d565b602002602001018181525050505080806125ae90615649565b9150506124a2565b505b50505050919050565b611123338484846130ca565b6125d6336119a7565b6126545760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612e2e565b6126666135e1565b6001600160a01b0381166126cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e816139d6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612705575060975490565b61270d61393f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612765573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127899190615785565b6001600160a01b0316336001600160a01b0316146127b95760405162461bcd60e51b8152600401610b31906157a2565b6066541981196066541916146128375760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129055760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b825161298f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612d3c576001600160a01b038616156129e8576129e886888684815181106129c1576129c161561d565b60200260200101518685815181106129db576129db61561d565b6020026020010151613566565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612a1857612a1861561d565b60200260200101516001600160a01b03161415612ae1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a7157612a7161561d565b60200260200101516040518363ffffffff1660e01b8152600401612aaa9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ac457600080fd5b505af1158015612ad8573d6000803e3d6000fd5b50505050612d34565b846001600160a01b0316876001600160a01b03161480612bb357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b3d57612b3d61561d565b60200260200101516040518263ffffffff1660e01b8152600401612b7091906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb19190615849565b155b612c7f5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612cc157612cc161561d565b6020026020010151868581518110612cdb57612cdb61561d565b60200260200101516040518463ffffffff1660e01b8152600401612d0193929190615bb8565b600060405180830381600087803b158015612d1b57600080fd5b505af1158015612d2f573d6000803e3d6000fd5b505050505b600101612992565b506001600160a01b0386166000908152609f60205260408120805491829190612d6483615649565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612dcc8261166b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612e1a9083908590615a42565b60405180910390a198975050505050505050565b6000612e3d6020830183614b44565b6001600160a01b03161415612ed75760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612eeb6060830160408401615bdc565b63ffffffff161115612fa05760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612fdc9060608401908401615bdc565b63ffffffff1610156130725760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906130968282615c19565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611c80908490615704565b606654600090600190811614156130f35760405162461bcd60e51b8152600401610b3190615664565b6130fc85611584565b156131795760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b613182846119a7565b6132025760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132385750336001600160a01b03821614155b801561324d5750336001600160a01b03861614155b156133ba5742846020015110156132cc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156133665760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516133a7908890889085908890610a43565b90506133b8828287600001516143e1565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061341988611d45565b9150915060005b82518110156113e257613467888a8584815181106134405761344061561d565b602002602001015185858151811061345a5761345a61561d565b6020026020010151613b22565b600101613420565b6001600160a01b0381166134fd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061359d908490615ba1565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615bb8565b6033546001600160a01b031633146119d95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146136c35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b8181101561198e5760008686838181106136e3576136e361561d565b90506020020160208101906136f89190614b44565b6001600160a01b038116600090815260a160205260408120549192508686858181106137265761372661561d565b90506020020135905062034bc08111156137ea5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a15050508061385290615649565b90506136c7565b6065546001600160a01b031615801561387a57506001600160a01b03821615155b6138fc5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26119428261346f565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613ae15760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613b59908490615b89565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615bb8565b600260c9541415613bf05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955565b6000613c0561062987615c7c565b6000818152609e602052604090205490915060ff16613c865760405162461bcd60e51b81526020600482015260436024820152600080516020615db483398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613c9b60a0890160808a01615bdc565b63ffffffff16613cab9190615b89565b1115613d335760405162461bcd60e51b815260206004820152605f6024820152600080516020615db483398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d436060870160408801614b44565b6001600160a01b0316336001600160a01b031614613dd05760405162461bcd60e51b81526020600482015260506024820152600080516020615db483398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613e5257613de360a08701876156bb565b85149050613e525760405162461bcd60e51b81526020600482015260426024820152600080516020615db483398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff191690558115613fb75760005b613e7e60a08801886156bb565b9050811015613fb1574360a16000613e9960a08b018b6156bb565b85818110613ea957613ea961561d565b9050602002016020810190613ebe9190614b44565b6001600160a01b03168152602081019190915260400160002054613ee860a08a0160808b01615bdc565b63ffffffff16613ef89190615b89565b1115613f165760405162461bcd60e51b8152600401610b3190615c8e565b613fa9613f266020890189614b44565b33613f3460a08b018b6156bb565b85818110613f4457613f4461561d565b9050602002016020810190613f599190614b44565b613f6660c08c018c6156bb565b86818110613f7657613f7661561d565b905060200201358a8a87818110613f8f57613f8f61561d565b9050602002016020810190613fa49190614b44565b61459b565b600101613e71565b506143a6565b336000908152609a60205260408120546001600160a01b0316905b613fdf60a08901896156bb565b90508110156143a3574360a16000613ffa60a08c018c6156bb565b8581811061400a5761400a61561d565b905060200201602081019061401f9190614b44565b6001600160a01b0316815260208101919091526040016000205461404960a08b0160808c01615bdc565b63ffffffff166140599190615b89565b11156140775760405162461bcd60e51b8152600401610b3190615c8e565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac061409960a08a018a6156bb565b838181106140a9576140a961561d565b90506020020160208101906140be9190614b44565b6001600160a01b0316141561420e5760006140dc60208a018a614b44565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c8361411d60c08e018e6156bb565b8781811061412d5761412d61561d565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015614181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a59190615a5b565b6001600160a01b038084166000908152609a60205260409020549192501680156142065761420681846141db60a08f018f6156bb565b888181106141eb576141eb61561d565b90506020020160208101906142009190614b44565b85613b22565b50505061439b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea1338989858181106142505761425061561d565b90506020020160208101906142659190614b44565b61427260a08d018d6156bb565b868181106142825761428261561d565b90506020020160208101906142979190614b44565b6142a460c08e018e6156bb565b878181106142b4576142b461561d565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561431457600080fd5b505af1158015614328573d6000803e3d6000fd5b505050506001600160a01b0382161561439b5761439b823361434d60a08c018c6156bb565b8581811061435d5761435d61561d565b90506020020160208101906143729190614b44565b61437f60c08d018d6156bb565b8681811061438f5761438f61561d565b90506020020135613b22565b600101613fd2565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156144fb57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144219086908690600401615d16565b602060405180830381865afa15801561443e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144629190615d73565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661450f83836146db565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146465760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061460f90889088908790600401615bb8565b600060405180830381600087803b15801561462957600080fd5b505af115801561463d573d6000803e3d6000fd5b505050506146d4565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b1580156146c057600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006146ea85856146f7565b91509150610a3b8161473d565b60008082516041141561472e5760208301516040840151606085015160001a6147228782858561488b565b94509450505050614736565b506000905060025b9250929050565b600081600481111561475157614751615d9d565b141561475a5750565b600181600481111561476e5761476e615d9d565b14156147bc5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b60028160048111156147d0576147d0615d9d565b141561481e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b600381600481111561483257614832615d9d565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148c25750600090506003614946565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614916573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661493f57600060019250925050614946565b9150600090505b94509492505050565b60008083601f84011261496157600080fd5b5081356001600160401b0381111561497857600080fd5b6020830191508360208260051b850101111561473657600080fd5b600080602083850312156149a657600080fd5b82356001600160401b038111156149bc57600080fd5b6149c88582860161494f565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b80356149f4816149d4565b919050565b600080600080600060a08688031215614a1157600080fd5b8535614a1c816149d4565b94506020860135614a2c816149d4565b93506040860135614a3c816149d4565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614a8c57835183529284019291840191600101614a70565b50909695505050505050565b600060608284031215614aaa57600080fd5b50919050565b60008083601f840112614ac257600080fd5b5081356001600160401b03811115614ad957600080fd5b60208301915083602082850101111561473657600080fd5b600080600060808486031215614b0657600080fd5b614b108585614a98565b925060608401356001600160401b03811115614b2b57600080fd5b614b3786828701614ab0565b9497909650939450505050565b600060208284031215614b5657600080fd5b8135614b61816149d4565b9392505050565b600080600060608486031215614b7d57600080fd5b8335614b88816149d4565b92506020840135614b98816149d4565b929592945050506040919091013590565b600060208284031215614bbb57600080fd5b5035919050565b60008060008060408587031215614bd857600080fd5b84356001600160401b0380821115614bef57600080fd5b614bfb8883890161494f565b90965094506020870135915080821115614c1457600080fd5b50614c218782880161494f565b95989497509550505050565b60008060008060008060008060c0898b031215614c4957600080fd5b8835614c54816149d4565b97506020890135614c64816149d4565b9650604089013595506060890135945060808901356001600160401b0380821115614c8e57600080fd5b614c9a8c838d0161494f565b909650945060a08b0135915080821115614cb357600080fd5b50614cc08b828c0161494f565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614cf057600080fd5b88356001600160401b0380821115614d0757600080fd5b614d138c838d0161494f565b909a50985060208b0135915080821115614d2c57600080fd5b614d388c838d0161494f565b909850965060408b0135915080821115614d5157600080fd5b614d5d8c838d0161494f565b909650945060608b0135915080821115614cb357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614dae57614dae614d76565b60405290565b604080519081016001600160401b0381118282101715614dae57614dae614d76565b60405160c081016001600160401b0381118282101715614dae57614dae614d76565b604051601f8201601f191681016001600160401b0381118282101715614e2057614e20614d76565b604052919050565b63ffffffff8116811461106e57600080fd5b80356149f481614e28565b60006001600160401b03821115614e5e57614e5e614d76565b5060051b60200190565b600082601f830112614e7957600080fd5b81356020614e8e614e8983614e45565b614df8565b82815260059290921b84018101918181019086841115614ead57600080fd5b8286015b84811015614ed1578035614ec4816149d4565b8352918301918301614eb1565b509695505050505050565b600082601f830112614eed57600080fd5b81356020614efd614e8983614e45565b82815260059290921b84018101918181019086841115614f1c57600080fd5b8286015b84811015614ed15780358352918301918301614f20565b600060e08284031215614f4957600080fd5b614f51614d8c565b9050614f5c826149e9565b8152614f6a602083016149e9565b6020820152614f7b604083016149e9565b604082015260608201356060820152614f9660808301614e3a565b608082015260a08201356001600160401b0380821115614fb557600080fd5b614fc185838601614e68565b60a084015260c0840135915080821115614fda57600080fd5b50614fe784828501614edc565b60c08301525092915050565b60006020828403121561500557600080fd5b81356001600160401b0381111561501b57600080fd5b61502784828501614f37565b949350505050565b60006020828403121561504157600080fd5b813560ff81168114614b6157600080fd5b60006040828403121561506457600080fd5b61506c614db4565b90508135615079816149d4565b815260208201356bffffffffffffffffffffffff8116811461509a57600080fd5b602082015292915050565b600060208083850312156150b857600080fd5b82356001600160401b03808211156150cf57600080fd5b818501915085601f8301126150e357600080fd5b81356150f1614e8982614e45565b81815260059190911b8301840190848101908883111561511057600080fd5b8585015b838110156151ea5780358581111561512c5760008081fd5b860160e0818c03601f19018113156151445760008081fd5b61514c614dd6565b898301358881111561515e5760008081fd5b61516c8e8c83870101614e68565b825250604080840135898111156151835760008081fd5b6151918f8d83880101614edc565b8c8401525060606151a38186016149e9565b82840152608091506151b78f838701615052565b908301526151c760c08501614e3a565b908201526151d68383016149e9565b60a082015285525050918601918601615114565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561521d57600080fd5b85356001600160401b038082111561523457600080fd5b9087019060e0828a03121561524857600080fd5b9095506020870135908082111561525e57600080fd5b5061526b8882890161494f565b909550935050604086013591506060860135615286816151f7565b809150509295509295909350565b600080604083850312156152a757600080fd5b82356152b2816149d4565b915060208301356152c2816149d4565b809150509250929050565b6000604082840312156152df57600080fd5b6152e7614db4565b905081356001600160401b038082111561530057600080fd5b818401915084601f83011261531457600080fd5b813560208282111561532857615328614d76565b61533a601f8301601f19168201614df8565b9250818352868183860101111561535057600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561538d57600080fd5b8535615398816149d4565b945060208601356153a8816149d4565b935060408601356001600160401b03808211156153c457600080fd5b6153d089838a016152cd565b945060608801359150808211156153e657600080fd5b506153f3888289016152cd565b95989497509295608001359392505050565b6000806040838503121561541857600080fd5b8235615423816149d4565b915060208301356001600160401b0381111561543e57600080fd5b61544a85828601614e68565b9150509250929050565b600081518084526020808501945080840160005b8381101561548457815187529582019590820190600101615468565b509495945050505050565b602081526000614b616020830184615454565b600080602083850312156154b557600080fd5b82356001600160401b038111156154cb57600080fd5b6149c885828601614ab0565b600080604083850312156154ea57600080fd5b82356154f5816149d4565b946020939093013593505050565b6000806000806080858703121561551957600080fd5b8435615524816149d4565b935060208501359250604085013561553b816149d4565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154845781516001600160a01b03168752958201959082019060010161555f565b604081526000615597604083018561554b565b82810360208401526112a08185615454565b6000806000606084860312156155be57600080fd5b83356155c9816149d4565b925060208401356001600160401b038111156155e457600080fd5b6155f0868287016152cd565b925050604084013590509250925092565b60006060828403121561561357600080fd5b614b618383614a98565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561565d5761565d615633565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126156b157600080fd5b9190910192915050565b6000808335601e198436030181126156d257600080fd5b8301803591506001600160401b038211156156ec57600080fd5b6020019150600581901b360382131561473657600080fd5b606081018235615713816149d4565b6001600160a01b03908116835260208401359061572f826149d4565b166020830152604083013561574381614e28565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561579757600080fd5b8151614b61816149d4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561585b57600080fd5b8151614b61816151f7565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126156b157600080fd5b6000602082840312156158d657600080fd5b8135614b61816151f7565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261593c60e085018261554b565b905060c083015184820360c08601526112a08282615454565b602081526000614b6160208301846158e1565b602081526000825160e0602084015261598561010084018261554b565b90506020840151601f198483030160408501526159a28282615454565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a08501525060808401516159fa60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615a2757600080fd5b8251615a32816151f7565b6020939093015192949293505050565b82815260406020820152600061502760408301846158e1565b600060208284031215615a6d57600080fd5b5051919050565b600082601f830112615a8557600080fd5b81516020615a95614e8983614e45565b82815260059290921b84018101918181019086841115615ab457600080fd5b8286015b84811015614ed15780518352918301918301615ab8565b60008060408385031215615ae257600080fd5b82516001600160401b0380821115615af957600080fd5b818501915085601f830112615b0d57600080fd5b81516020615b1d614e8983614e45565b82815260059290921b84018101918181019089841115615b3c57600080fd5b948201945b83861015615b63578551615b54816149d4565b82529482019490820190615b41565b91880151919650909350505080821115615b7c57600080fd5b5061544a85828601615a74565b60008219821115615b9c57615b9c615633565b500190565b600082821015615bb357615bb3615633565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615bee57600080fd5b8135614b6181614e28565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615c24816149d4565b615c2e8183615bf9565b50600181016020830135615c41816149d4565b615c4b8183615bf9565b506040830135615c5a81614e28565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615c883683614f37565b92915050565b6020808252606e90820152600080516020615db483398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615d4a57858101830151858201606001528201615d2e565b81811115615d5c576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615d8557600080fd5b81516001600160e01b031981168114614b6157600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220231b7135632a44e93250076d2a1a11f6fe9ac6e35f1da3e06b9b4b6a21661ee764736f6c634300080c0033", + Bin: "0x6101006040523480156200001257600080fd5b50604051620060383803806200603883398101604081905262000035916200013f565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000193565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000124576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013c57600080fd5b50565b6000806000606084860312156200015557600080fd5b8351620001628162000126565b6020850151909350620001758162000126565b6040850151909250620001888162000126565b809150509250925092565b60805160a05160c05160e051615e096200022f60003960006126d80152600081816105e7015281816110ae0152818161142a01528181611d6c01528181612a31015281816140ea01526145d6015260006107d701526000818161052f0152818161107c015281816113f8015281816116ca01528181611e0001528181612afe01528181612c8101528181614210015261467c0152615e096000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614993565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d83660046149f9565b610a43565b6103f06103eb366004614993565b610b05565b60405161039a9190614a54565b61041061040b366004614af1565b610e6e565b005b610410610420366004614b44565b610fbe565b610410610433366004614b68565b611071565b610410610446366004614ba9565b611128565b610410610459366004614bc2565b611267565b61039061046c366004614b44565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614b68565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614c2d565b6112a9565b6104106104f2366004614b68565b6113ed565b610390610505366004614b44565b609b6020526000908152604090205481565b610410610525366004614cd4565b61149d565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039a565b610551610577366004614b44565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614b44565b611584565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6103906213c68081565b6104106115a4565b610390610629366004614ff3565b61166b565b6105ab61063c36600461502f565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046150a5565b61169b565b61055161067a366004614b44565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a6366004615205565b611946565b6104106106b9366004614ba9565b611996565b6105516106cc366004614b44565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614b44565b6119a7565b6104106119c7565b610390610710366004615294565b609860209081526000928352604080842090915290825290205481565b61041061073b366004615375565b6119db565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b610777610772366004615405565b611ae0565b60405161039a919061548f565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046154a2565b611bba565b6103906107c0366004614b44565b609f6020526000908152604090205481565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6105ab610807366004614ba9565b609e6020526000908152604090205460ff1681565b6105ab61082a3660046154d7565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614b44565b60a16020526000908152604090205481565b6108e3610881366004614b44565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b610390610927366004615503565b611c8c565b61039062034bc081565b610949610944366004614b44565b611d45565b60405161039a929190615584565b6103f0610965366004614b44565b6120fd565b6104106109783660046155a9565b6125c1565b61041061098b366004615601565b6125cd565b61041061099e366004614b44565b61265e565b6103906126d4565b6104106109b9366004614ba9565b612712565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e661561d565b90506020020160208101906109fb9190614b44565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615649565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac16126d4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b3190615664565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614d76565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb861561d565b9050602002810190610bca919061569b565b610bd89060208101906156bb565b9050878783818110610bec57610bec61561d565b9050602002810190610bfe919061569b565b610c0890806156bb565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c9061561d565b9050602002810190610ca2919061569b565b610cb3906060810190604001614b44565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d4661561d565b9050602002810190610d58919061569b565b610d69906060810190604001614b44565b8a8a86818110610d7b57610d7b61561d565b9050602002810190610d8d919061569b565b610d9790806156bb565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd61561d565b9050602002810190610def919061569b565b610dfd9060208101906156bb565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061286e92505050565b838281518110610e4657610e4661561d565b602090810291909101015280610e5b81615649565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612e2e565b604080518082019091526060815260006020820152610f3433808360006130ca565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d9190615704565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb0929190615756565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110359190615785565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906157a2565b61106e8161346f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110d05750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110ec5760405162461bcd60e51b8152600401610b31906157ec565b6110f583611584565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613566565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615849565b6111b05760405162461bcd60e51b8152600401610b3190615866565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f6135e1565b6111218484848461363b565b6001600160a01b0383166000908152609b60205260408120546112a085828686611c8c565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613859565b61137b61393f565b609755611387896139d6565b61139086613a28565b61139c8585858561363b565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061144c5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6114685760405162461bcd60e51b8152600401610b31906157ec565b61147183611584565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613b22565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b3190615664565b6114ce613b9d565b60005b88811015611579576115698a8a838181106114ee576114ee61561d565b905060200281019061150091906158ae565b8989848181106115125761151261561d565b905060200281019061152491906156bb565b8989868181106115365761153661561d565b9050602002013588888781811061154f5761154f61561d565b905060200201602081019061156491906158c4565b613bf7565b61157281615649565b90506114d1565b506113e2600160c955565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190615849565b61162c5760405162461bcd60e51b8152600401610b3190615866565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161167e9190615955565b604051602081830303815290604052805190602001209050919050565b60005b81518110156119425760008282815181106116bb576116bb61561d565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016117149190615968565b60408051808303816000875af1158015611732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117569190615a14565b915091508115611934576040808401516001600160a01b0381166000908152609f6020529182208054919282919061178d83615649565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff1681526020018760000151815260200187602001518152509050600061180d8261166b565b6000818152609e602052604090205490915060ff16156118a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906118ee9083908590615a42565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061169e565b5050565b6066546002906004908116141561196f5760405162461bcd60e51b8152600401610b3190615664565b611977613b9d565b6119848686868686613bf7565b61198e600160c955565b505050505050565b61199e6135e1565b61106e81613a28565b6001600160a01b0390811660009081526099602052604090205416151590565b6119cf6135e1565b6119d960006139d6565b565b4283602001511015611a5f5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611a9b8783888860200151611c8c565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611acb90889083906143e1565b611ad7878786866130ca565b50505050505050565b6060600082516001600160401b03811115611afd57611afd614d76565b604051908082528060200260200182016040528015611b26578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611b6457611b6461561d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611b9f57611b9f61561d565b6020908102919091010152611bb381615649565b9050611b2c565b611bc3336119a7565b611c455760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611c80929190615756565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611d026126d4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190615a5b565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611e49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e719190810190615acf565b9150915060008313611e8857909590945092505050565b606080835160001415611f42576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611efd57611efd61561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611f3157611f3161561d565b6020026020010181815250506120f0565b8351611f4f906001615b89565b6001600160401b03811115611f6657611f66614d76565b604051908082528060200260200182016040528015611f8f578160200160208202803683370190505b50915081516001600160401b03811115611fab57611fab614d76565b604051908082528060200260200182016040528015611fd4578160200160208202803683370190505b50905060005b845181101561206e57848181518110611ff557611ff561561d565b602002602001015183828151811061200f5761200f61561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120415761204161561d565b602002602001015182828151811061205b5761205b61561d565b6020908102919091010152600101611fda565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516120939190615ba1565b815181106120a3576120a361561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516120d39190615ba1565b815181106120e3576120e361561d565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121295760405162461bcd60e51b8152600401610b3190615664565b61213283611584565b6121b25760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b6121bb836119a7565b1561222e5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b0383166122aa5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a6020526040902054909116903314806122dd5750336001600160a01b038216145b8061230457506001600160a01b038181166000908152609960205260409020600101541633145b6123765760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061238286611d45565b9092509050336001600160a01b038716146123d857826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161245a5760408051600081526020810190915294506125b8565b81516001600160401b0381111561247357612473614d76565b60405190808252806020026020018201604052801561249c578160200160208202803683370190505b50945060005b82518110156125b6576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125025761250261561d565b60200260200101518260008151811061251d5761251d61561d565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061254f5761254f61561d565b60200260200101518160008151811061256a5761256a61561d565b60200260200101818152505061258389878b858561286e565b8884815181106125955761259561561d565b602002602001018181525050505080806125ae90615649565b9150506124a2565b505b50505050919050565b611123338484846130ca565b6125d6336119a7565b6126545760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612e2e565b6126666135e1565b6001600160a01b0381166126cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e816139d6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612705575060975490565b61270d61393f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612765573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127899190615785565b6001600160a01b0316336001600160a01b0316146127b95760405162461bcd60e51b8152600401610b31906157a2565b6066541981196066541916146128375760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129055760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b825161298f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612d3c576001600160a01b038616156129e8576129e886888684815181106129c1576129c161561d565b60200260200101518685815181106129db576129db61561d565b6020026020010151613566565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612a1857612a1861561d565b60200260200101516001600160a01b03161415612ae1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a7157612a7161561d565b60200260200101516040518363ffffffff1660e01b8152600401612aaa9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ac457600080fd5b505af1158015612ad8573d6000803e3d6000fd5b50505050612d34565b846001600160a01b0316876001600160a01b03161480612bb357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b3d57612b3d61561d565b60200260200101516040518263ffffffff1660e01b8152600401612b7091906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb19190615849565b155b612c7f5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612cc157612cc161561d565b6020026020010151868581518110612cdb57612cdb61561d565b60200260200101516040518463ffffffff1660e01b8152600401612d0193929190615bb8565b600060405180830381600087803b158015612d1b57600080fd5b505af1158015612d2f573d6000803e3d6000fd5b505050505b600101612992565b506001600160a01b0386166000908152609f60205260408120805491829190612d6483615649565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612dcc8261166b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612e1a9083908590615a42565b60405180910390a198975050505050505050565b6000612e3d6020830183614b44565b6001600160a01b03161415612ed75760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612eeb6060830160408401615bdc565b63ffffffff161115612fa05760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612fdc9060608401908401615bdc565b63ffffffff1610156130725760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906130968282615c19565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611c80908490615704565b606654600090600190811614156130f35760405162461bcd60e51b8152600401610b3190615664565b6130fc85611584565b156131795760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b613182846119a7565b6132025760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132385750336001600160a01b03821614155b801561324d5750336001600160a01b03861614155b156133ba5742846020015110156132cc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156133665760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516133a7908890889085908890610a43565b90506133b8828287600001516143e1565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061341988611d45565b9150915060005b82518110156113e257613467888a8584815181106134405761344061561d565b602002602001015185858151811061345a5761345a61561d565b6020026020010151613b22565b600101613420565b6001600160a01b0381166134fd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061359d908490615ba1565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615bb8565b6033546001600160a01b031633146119d95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146136c35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b8181101561198e5760008686838181106136e3576136e361561d565b90506020020160208101906136f89190614b44565b6001600160a01b038116600090815260a160205260408120549192508686858181106137265761372661561d565b90506020020135905062034bc08111156137ea5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a15050508061385290615649565b90506136c7565b6065546001600160a01b031615801561387a57506001600160a01b03821615155b6138fc5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26119428261346f565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613ae15760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613b59908490615b89565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615bb8565b600260c9541415613bf05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955565b6000613c0561062987615c7c565b6000818152609e602052604090205490915060ff16613c865760405162461bcd60e51b81526020600482015260436024820152600080516020615db483398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613c9b60a0890160808a01615bdc565b63ffffffff16613cab9190615b89565b1115613d335760405162461bcd60e51b815260206004820152605f6024820152600080516020615db483398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d436060870160408801614b44565b6001600160a01b0316336001600160a01b031614613dd05760405162461bcd60e51b81526020600482015260506024820152600080516020615db483398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613e5257613de360a08701876156bb565b85149050613e525760405162461bcd60e51b81526020600482015260426024820152600080516020615db483398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff191690558115613fb75760005b613e7e60a08801886156bb565b9050811015613fb1574360a16000613e9960a08b018b6156bb565b85818110613ea957613ea961561d565b9050602002016020810190613ebe9190614b44565b6001600160a01b03168152602081019190915260400160002054613ee860a08a0160808b01615bdc565b63ffffffff16613ef89190615b89565b1115613f165760405162461bcd60e51b8152600401610b3190615c8e565b613fa9613f266020890189614b44565b33613f3460a08b018b6156bb565b85818110613f4457613f4461561d565b9050602002016020810190613f599190614b44565b613f6660c08c018c6156bb565b86818110613f7657613f7661561d565b905060200201358a8a87818110613f8f57613f8f61561d565b9050602002016020810190613fa49190614b44565b61459b565b600101613e71565b506143a6565b336000908152609a60205260408120546001600160a01b0316905b613fdf60a08901896156bb565b90508110156143a3574360a16000613ffa60a08c018c6156bb565b8581811061400a5761400a61561d565b905060200201602081019061401f9190614b44565b6001600160a01b0316815260208101919091526040016000205461404960a08b0160808c01615bdc565b63ffffffff166140599190615b89565b11156140775760405162461bcd60e51b8152600401610b3190615c8e565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac061409960a08a018a6156bb565b838181106140a9576140a961561d565b90506020020160208101906140be9190614b44565b6001600160a01b0316141561420e5760006140dc60208a018a614b44565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c8361411d60c08e018e6156bb565b8781811061412d5761412d61561d565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015614181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a59190615a5b565b6001600160a01b038084166000908152609a60205260409020549192501680156142065761420681846141db60a08f018f6156bb565b888181106141eb576141eb61561d565b90506020020160208101906142009190614b44565b85613b22565b50505061439b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea1338989858181106142505761425061561d565b90506020020160208101906142659190614b44565b61427260a08d018d6156bb565b868181106142825761428261561d565b90506020020160208101906142979190614b44565b6142a460c08e018e6156bb565b878181106142b4576142b461561d565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561431457600080fd5b505af1158015614328573d6000803e3d6000fd5b505050506001600160a01b0382161561439b5761439b823361434d60a08c018c6156bb565b8581811061435d5761435d61561d565b90506020020160208101906143729190614b44565b61437f60c08d018d6156bb565b8681811061438f5761438f61561d565b90506020020135613b22565b600101613fd2565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156144fb57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144219086908690600401615d16565b602060405180830381865afa15801561443e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144629190615d73565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661450f83836146db565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146465760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061460f90889088908790600401615bb8565b600060405180830381600087803b15801561462957600080fd5b505af115801561463d573d6000803e3d6000fd5b505050506146d4565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b1580156146c057600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006146ea85856146f7565b91509150610a3b8161473d565b60008082516041141561472e5760208301516040840151606085015160001a6147228782858561488b565b94509450505050614736565b506000905060025b9250929050565b600081600481111561475157614751615d9d565b141561475a5750565b600181600481111561476e5761476e615d9d565b14156147bc5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b60028160048111156147d0576147d0615d9d565b141561481e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b600381600481111561483257614832615d9d565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148c25750600090506003614946565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614916573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661493f57600060019250925050614946565b9150600090505b94509492505050565b60008083601f84011261496157600080fd5b5081356001600160401b0381111561497857600080fd5b6020830191508360208260051b850101111561473657600080fd5b600080602083850312156149a657600080fd5b82356001600160401b038111156149bc57600080fd5b6149c88582860161494f565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b80356149f4816149d4565b919050565b600080600080600060a08688031215614a1157600080fd5b8535614a1c816149d4565b94506020860135614a2c816149d4565b93506040860135614a3c816149d4565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614a8c57835183529284019291840191600101614a70565b50909695505050505050565b600060608284031215614aaa57600080fd5b50919050565b60008083601f840112614ac257600080fd5b5081356001600160401b03811115614ad957600080fd5b60208301915083602082850101111561473657600080fd5b600080600060808486031215614b0657600080fd5b614b108585614a98565b925060608401356001600160401b03811115614b2b57600080fd5b614b3786828701614ab0565b9497909650939450505050565b600060208284031215614b5657600080fd5b8135614b61816149d4565b9392505050565b600080600060608486031215614b7d57600080fd5b8335614b88816149d4565b92506020840135614b98816149d4565b929592945050506040919091013590565b600060208284031215614bbb57600080fd5b5035919050565b60008060008060408587031215614bd857600080fd5b84356001600160401b0380821115614bef57600080fd5b614bfb8883890161494f565b90965094506020870135915080821115614c1457600080fd5b50614c218782880161494f565b95989497509550505050565b60008060008060008060008060c0898b031215614c4957600080fd5b8835614c54816149d4565b97506020890135614c64816149d4565b9650604089013595506060890135945060808901356001600160401b0380821115614c8e57600080fd5b614c9a8c838d0161494f565b909650945060a08b0135915080821115614cb357600080fd5b50614cc08b828c0161494f565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614cf057600080fd5b88356001600160401b0380821115614d0757600080fd5b614d138c838d0161494f565b909a50985060208b0135915080821115614d2c57600080fd5b614d388c838d0161494f565b909850965060408b0135915080821115614d5157600080fd5b614d5d8c838d0161494f565b909650945060608b0135915080821115614cb357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614dae57614dae614d76565b60405290565b604080519081016001600160401b0381118282101715614dae57614dae614d76565b60405160c081016001600160401b0381118282101715614dae57614dae614d76565b604051601f8201601f191681016001600160401b0381118282101715614e2057614e20614d76565b604052919050565b63ffffffff8116811461106e57600080fd5b80356149f481614e28565b60006001600160401b03821115614e5e57614e5e614d76565b5060051b60200190565b600082601f830112614e7957600080fd5b81356020614e8e614e8983614e45565b614df8565b82815260059290921b84018101918181019086841115614ead57600080fd5b8286015b84811015614ed1578035614ec4816149d4565b8352918301918301614eb1565b509695505050505050565b600082601f830112614eed57600080fd5b81356020614efd614e8983614e45565b82815260059290921b84018101918181019086841115614f1c57600080fd5b8286015b84811015614ed15780358352918301918301614f20565b600060e08284031215614f4957600080fd5b614f51614d8c565b9050614f5c826149e9565b8152614f6a602083016149e9565b6020820152614f7b604083016149e9565b604082015260608201356060820152614f9660808301614e3a565b608082015260a08201356001600160401b0380821115614fb557600080fd5b614fc185838601614e68565b60a084015260c0840135915080821115614fda57600080fd5b50614fe784828501614edc565b60c08301525092915050565b60006020828403121561500557600080fd5b81356001600160401b0381111561501b57600080fd5b61502784828501614f37565b949350505050565b60006020828403121561504157600080fd5b813560ff81168114614b6157600080fd5b60006040828403121561506457600080fd5b61506c614db4565b90508135615079816149d4565b815260208201356bffffffffffffffffffffffff8116811461509a57600080fd5b602082015292915050565b600060208083850312156150b857600080fd5b82356001600160401b03808211156150cf57600080fd5b818501915085601f8301126150e357600080fd5b81356150f1614e8982614e45565b81815260059190911b8301840190848101908883111561511057600080fd5b8585015b838110156151ea5780358581111561512c5760008081fd5b860160e0818c03601f19018113156151445760008081fd5b61514c614dd6565b898301358881111561515e5760008081fd5b61516c8e8c83870101614e68565b825250604080840135898111156151835760008081fd5b6151918f8d83880101614edc565b8c8401525060606151a38186016149e9565b82840152608091506151b78f838701615052565b908301526151c760c08501614e3a565b908201526151d68383016149e9565b60a082015285525050918601918601615114565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561521d57600080fd5b85356001600160401b038082111561523457600080fd5b9087019060e0828a03121561524857600080fd5b9095506020870135908082111561525e57600080fd5b5061526b8882890161494f565b909550935050604086013591506060860135615286816151f7565b809150509295509295909350565b600080604083850312156152a757600080fd5b82356152b2816149d4565b915060208301356152c2816149d4565b809150509250929050565b6000604082840312156152df57600080fd5b6152e7614db4565b905081356001600160401b038082111561530057600080fd5b818401915084601f83011261531457600080fd5b813560208282111561532857615328614d76565b61533a601f8301601f19168201614df8565b9250818352868183860101111561535057600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561538d57600080fd5b8535615398816149d4565b945060208601356153a8816149d4565b935060408601356001600160401b03808211156153c457600080fd5b6153d089838a016152cd565b945060608801359150808211156153e657600080fd5b506153f3888289016152cd565b95989497509295608001359392505050565b6000806040838503121561541857600080fd5b8235615423816149d4565b915060208301356001600160401b0381111561543e57600080fd5b61544a85828601614e68565b9150509250929050565b600081518084526020808501945080840160005b8381101561548457815187529582019590820190600101615468565b509495945050505050565b602081526000614b616020830184615454565b600080602083850312156154b557600080fd5b82356001600160401b038111156154cb57600080fd5b6149c885828601614ab0565b600080604083850312156154ea57600080fd5b82356154f5816149d4565b946020939093013593505050565b6000806000806080858703121561551957600080fd5b8435615524816149d4565b935060208501359250604085013561553b816149d4565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154845781516001600160a01b03168752958201959082019060010161555f565b604081526000615597604083018561554b565b82810360208401526112a08185615454565b6000806000606084860312156155be57600080fd5b83356155c9816149d4565b925060208401356001600160401b038111156155e457600080fd5b6155f0868287016152cd565b925050604084013590509250925092565b60006060828403121561561357600080fd5b614b618383614a98565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561565d5761565d615633565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126156b157600080fd5b9190910192915050565b6000808335601e198436030181126156d257600080fd5b8301803591506001600160401b038211156156ec57600080fd5b6020019150600581901b360382131561473657600080fd5b606081018235615713816149d4565b6001600160a01b03908116835260208401359061572f826149d4565b166020830152604083013561574381614e28565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561579757600080fd5b8151614b61816149d4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561585b57600080fd5b8151614b61816151f7565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126156b157600080fd5b6000602082840312156158d657600080fd5b8135614b61816151f7565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261593c60e085018261554b565b905060c083015184820360c08601526112a08282615454565b602081526000614b6160208301846158e1565b602081526000825160e0602084015261598561010084018261554b565b90506020840151601f198483030160408501526159a28282615454565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a08501525060808401516159fa60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615a2757600080fd5b8251615a32816151f7565b6020939093015192949293505050565b82815260406020820152600061502760408301846158e1565b600060208284031215615a6d57600080fd5b5051919050565b600082601f830112615a8557600080fd5b81516020615a95614e8983614e45565b82815260059290921b84018101918181019086841115615ab457600080fd5b8286015b84811015614ed15780518352918301918301615ab8565b60008060408385031215615ae257600080fd5b82516001600160401b0380821115615af957600080fd5b818501915085601f830112615b0d57600080fd5b81516020615b1d614e8983614e45565b82815260059290921b84018101918181019089841115615b3c57600080fd5b948201945b83861015615b63578551615b54816149d4565b82529482019490820190615b41565b91880151919650909350505080821115615b7c57600080fd5b5061544a85828601615a74565b60008219821115615b9c57615b9c615633565b500190565b600082821015615bb357615bb3615633565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615bee57600080fd5b8135614b6181614e28565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615c24816149d4565b615c2e8183615bf9565b50600181016020830135615c41816149d4565b615c4b8183615bf9565b506040830135615c5a81614e28565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615c883683614f37565b92915050565b6020808252606e90820152600080516020615db483398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615d4a57858101830151858201606001528201615d2e565b81811115615d5c576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615d8557600080fd5b81516001600160e01b031981168114614b6157600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122065bef68dcce15bc7412c9185c1d02811cb4839b5e272883a936d7cdaab2c67fd64736f6c634300080c0033", } // DelegationManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/feeoraclev1.go b/contracts/bindings/feeoraclev1.go index 865d63206..4f7e9936d 100644 --- a/contracts/bindings/feeoraclev1.go +++ b/contracts/bindings/feeoraclev1.go @@ -32,7 +32,7 @@ var ( // FeeOracleV1MetaData contains all meta data concerning the FeeOracleV1 contract. var FeeOracleV1MetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"fee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"feeFor\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"fee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setFee\",\"inputs\":[{\"name\":\"fee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"FeeChanged\",\"inputs\":[{\"name\":\"oldFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610626806100ec6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638dd9523c1161005b5780638dd9523c146100bf578063cd6dc687146100e6578063ddca3f43146100f9578063f2fde38b1461010257600080fd5b806369fe0e2d14610082578063715018a6146100975780638da5cb5b1461009f575b600080fd5b610095610090366004610478565b610115565b005b610095610129565b6033546040516001600160a01b0390911681526020015b60405180910390f35b6100d86100cd3660046104ae565b606554949350505050565b6040519081526020016100b6565b6100956100f4366004610559565b61013d565b6100d860655481565b610095610110366004610583565b610267565b61011d6102dd565b61012681610337565b50565b6101316102dd565b61013b60006103cc565b565b600054610100900460ff161580801561015d5750600054600160ff909116105b806101775750303b158015610177575060005460ff166001145b6101df5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610202576000805461ff0019166101001790555b61020a61041e565b610213836103cc565b61021c82610337565b8015610262576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61026f6102dd565b6001600160a01b0381166102d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101d6565b610126816103cc565b6033546001600160a01b0316331461013b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d6565b600081116103875760405162461bcd60e51b815260206004820152601c60248201527f4665654f7261636c6556313a20666565206d757374206265203e20300000000060448201526064016101d6565b606580549082905560408051828152602081018490527f5fc463da23c1b063e66f9e352006a7fbe8db7223c455dc429e881a2dfe2f94f1910160405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166104455760405162461bcd60e51b81526004016101d6906105a5565b61013b600054610100900460ff1661046f5760405162461bcd60e51b81526004016101d6906105a5565b61013b336103cc565b60006020828403121561048a57600080fd5b5035919050565b803567ffffffffffffffff811681146104a957600080fd5b919050565b600080600080606085870312156104c457600080fd5b6104cd85610491565b9350602085013567ffffffffffffffff808211156104ea57600080fd5b818701915087601f8301126104fe57600080fd5b81358181111561050d57600080fd5b88602082850101111561051f57600080fd5b60208301955080945050505061053760408601610491565b905092959194509250565b80356001600160a01b03811681146104a957600080fd5b6000806040838503121561056c57600080fd5b61057583610542565b946020939093013593505050565b60006020828403121561059557600080fd5b61059e82610542565b9392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea26469706673582212207e85f2c665eaad274aeef0ffa049215abcf7b4b58eb642c95ec5be72be79d5c464736f6c63430008170033", + Bin: "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610626806100ec6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638dd9523c1161005b5780638dd9523c146100bf578063cd6dc687146100e6578063ddca3f43146100f9578063f2fde38b1461010257600080fd5b806369fe0e2d14610082578063715018a6146100975780638da5cb5b1461009f575b600080fd5b610095610090366004610478565b610115565b005b610095610129565b6033546040516001600160a01b0390911681526020015b60405180910390f35b6100d86100cd3660046104ae565b606554949350505050565b6040519081526020016100b6565b6100956100f4366004610559565b61013d565b6100d860655481565b610095610110366004610583565b610267565b61011d6102dd565b61012681610337565b50565b6101316102dd565b61013b60006103cc565b565b600054610100900460ff161580801561015d5750600054600160ff909116105b806101775750303b158015610177575060005460ff166001145b6101df5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610202576000805461ff0019166101001790555b61020a61041e565b610213836103cc565b61021c82610337565b8015610262576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61026f6102dd565b6001600160a01b0381166102d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101d6565b610126816103cc565b6033546001600160a01b0316331461013b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d6565b600081116103875760405162461bcd60e51b815260206004820152601c60248201527f4665654f7261636c6556313a20666565206d757374206265203e20300000000060448201526064016101d6565b606580549082905560408051828152602081018490527f5fc463da23c1b063e66f9e352006a7fbe8db7223c455dc429e881a2dfe2f94f1910160405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166104455760405162461bcd60e51b81526004016101d6906105a5565b61013b600054610100900460ff1661046f5760405162461bcd60e51b81526004016101d6906105a5565b61013b336103cc565b60006020828403121561048a57600080fd5b5035919050565b803567ffffffffffffffff811681146104a957600080fd5b919050565b600080600080606085870312156104c457600080fd5b6104cd85610491565b9350602085013567ffffffffffffffff808211156104ea57600080fd5b818701915087601f8301126104fe57600080fd5b81358181111561050d57600080fd5b88602082850101111561051f57600080fd5b60208301955080945050505061053760408601610491565b905092959194509250565b80356001600160a01b03811681146104a957600080fd5b6000806040838503121561056c57600080fd5b61057583610542565b946020939093013593505050565b60006020828403121561059557600080fd5b61059e82610542565b9392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220993429931089587a3118ac9b6ebb63400f6814d1083f49ab44f679249405ff9264736f6c63430008170033", } // FeeOracleV1ABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/mockerc20.go b/contracts/bindings/mockerc20.go index 5690496a6..c79bfdb61 100644 --- a/contracts/bindings/mockerc20.go +++ b/contracts/bindings/mockerc20.go @@ -32,7 +32,7 @@ var ( // MockERC20MetaData contains all meta data concerning the MockERC20 contract. var MockERC20MetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162000be238038062000be28339810160408190526200003491620001e1565b8151829082906200004d9060039060208501906200006e565b508051620000639060049060208401906200006e565b505050505062000288565b8280546200007c906200024b565b90600052602060002090601f016020900481019282620000a05760008555620000eb565b82601f10620000bb57805160ff1916838001178555620000eb565b82800160010185558215620000eb579182015b82811115620000eb578251825591602001919060010190620000ce565b50620000f9929150620000fd565b5090565b5b80821115620000f95760008155600101620000fe565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013c57600080fd5b81516001600160401b038082111562000159576200015962000114565b604051601f8301601f19908116603f0116810190828211818310171562000184576200018462000114565b81604052838152602092508683858801011115620001a157600080fd5b600091505b83821015620001c55785820183015181830184015290820190620001a6565b83821115620001d75760008385830101525b9695505050505050565b60008060408385031215620001f557600080fd5b82516001600160401b03808211156200020d57600080fd5b6200021b868387016200012a565b935060208501519150808211156200023257600080fd5b5062000241858286016200012a565b9150509250929050565b600181811c908216806200026057607f821691505b602082108114156200028257634e487b7160e01b600052602260045260246000fd5b50919050565b61094a80620002986000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce9190610787565b60405180910390f35b6100ea6100e53660046107f8565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a366004610822565b61026a565b604051601281526020016100ce565b6100ea61013c3660046107f8565b61028e565b61015461014f3660046107f8565b6102b0565b005b6100fe61016436600461085e565b6001600160a01b031660009081526020819052604090205490565b6100c16102be565b6100ea6101953660046107f8565b6102cd565b6100ea6101a83660046107f8565b61034d565b6100fe6101bb366004610880565b61035b565b6060600380546101cf906108b3565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb906108b3565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610386565b5060019392505050565b6000336102788582856104aa565b610283858585610524565b506001949350505050565b6000336102608185856102a1838361035b565b6102ab91906108ee565b610386565b6102ba82826106c8565b5050565b6060600480546101cf906108b3565b600033816102db828661035b565b9050838110156103405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102838286868403610386565b600033610260818585610524565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610337565b6001600160a01b0382166104495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610337565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104b6848461035b565b9050600019811461051e57818110156105115760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610337565b61051e8484848403610386565b50505050565b6001600160a01b0383166105885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610337565b6001600160a01b0382166105ea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610337565b6001600160a01b038316600090815260208190526040902054818110156106625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610337565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361051e565b6001600160a01b03821661071e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610337565b806002600082825461073091906108ee565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b818110156107b457858101830151858201604001528201610798565b818111156107c6576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107f357600080fd5b919050565b6000806040838503121561080b57600080fd5b610814836107dc565b946020939093013593505050565b60008060006060848603121561083757600080fd5b610840846107dc565b925061084e602085016107dc565b9150604084013590509250925092565b60006020828403121561087057600080fd5b610879826107dc565b9392505050565b6000806040838503121561089357600080fd5b61089c836107dc565b91506108aa602084016107dc565b90509250929050565b600181811c908216806108c757607f821691505b602082108114156108e857634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561090f57634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212205a302dc021b84287aff250159478d829d0327220b53f85b7ad1958418375249664736f6c634300080c0033", + Bin: "0x60806040523480156200001157600080fd5b5060405162000be238038062000be28339810160408190526200003491620001e1565b8151829082906200004d9060039060208501906200006e565b508051620000639060049060208401906200006e565b505050505062000288565b8280546200007c906200024b565b90600052602060002090601f016020900481019282620000a05760008555620000eb565b82601f10620000bb57805160ff1916838001178555620000eb565b82800160010185558215620000eb579182015b82811115620000eb578251825591602001919060010190620000ce565b50620000f9929150620000fd565b5090565b5b80821115620000f95760008155600101620000fe565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013c57600080fd5b81516001600160401b038082111562000159576200015962000114565b604051601f8301601f19908116603f0116810190828211818310171562000184576200018462000114565b81604052838152602092508683858801011115620001a157600080fd5b600091505b83821015620001c55785820183015181830184015290820190620001a6565b83821115620001d75760008385830101525b9695505050505050565b60008060408385031215620001f557600080fd5b82516001600160401b03808211156200020d57600080fd5b6200021b868387016200012a565b935060208501519150808211156200023257600080fd5b5062000241858286016200012a565b9150509250929050565b600181811c908216806200026057607f821691505b602082108114156200028257634e487b7160e01b600052602260045260246000fd5b50919050565b61094a80620002986000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce9190610787565b60405180910390f35b6100ea6100e53660046107f8565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a366004610822565b61026a565b604051601281526020016100ce565b6100ea61013c3660046107f8565b61028e565b61015461014f3660046107f8565b6102b0565b005b6100fe61016436600461085e565b6001600160a01b031660009081526020819052604090205490565b6100c16102be565b6100ea6101953660046107f8565b6102cd565b6100ea6101a83660046107f8565b61034d565b6100fe6101bb366004610880565b61035b565b6060600380546101cf906108b3565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb906108b3565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610386565b5060019392505050565b6000336102788582856104aa565b610283858585610524565b506001949350505050565b6000336102608185856102a1838361035b565b6102ab91906108ee565b610386565b6102ba82826106c8565b5050565b6060600480546101cf906108b3565b600033816102db828661035b565b9050838110156103405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102838286868403610386565b600033610260818585610524565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610337565b6001600160a01b0382166104495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610337565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104b6848461035b565b9050600019811461051e57818110156105115760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610337565b61051e8484848403610386565b50505050565b6001600160a01b0383166105885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610337565b6001600160a01b0382166105ea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610337565b6001600160a01b038316600090815260208190526040902054818110156106625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610337565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361051e565b6001600160a01b03821661071e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610337565b806002600082825461073091906108ee565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b818110156107b457858101830151858201604001528201610798565b818111156107c6576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107f357600080fd5b919050565b6000806040838503121561080b57600080fd5b610814836107dc565b946020939093013593505050565b60008060006060848603121561083757600080fd5b610840846107dc565b925061084e602085016107dc565b9150604084013590509250925092565b60006020828403121561087057600080fd5b610879826107dc565b9392505050565b6000806040838503121561089357600080fd5b61089c836107dc565b91506108aa602084016107dc565b90509250929050565b600181811c908216806108c757607f821691505b602082108114156108e857634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561090f57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220ad178920ddad0e9ccdede99a0ebf77eb0e2987daf014917631edf4b9b145843b64736f6c634300080c0033", } // MockERC20ABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/omniavs.go b/contracts/bindings/omniavs.go index 652caf881..c4d0cf1ea 100644 --- a/contracts/bindings/omniavs.go +++ b/contracts/bindings/omniavs.go @@ -52,7 +52,7 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { // OmniAVSMetaData contains all meta data concerning the OmniAVS contract. var OmniAVSMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"delegationManager_\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"avsDirectory_\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addToAllowlist\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ethStakeInbox\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"feeForSync\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"omni_\",\"type\":\"address\",\"internalType\":\"contractIOmniPortal\"},{\"name\":\"omniChainId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"ethStakeInbox_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategyParams_\",\"type\":\"tuple[]\",\"internalType\":\"structIOmniAVS.StrategyParam[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isInAllowlist\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"omni\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOmniPortal\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"omniChainId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operators\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIOmniAVS.Operator[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegated\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"staked\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeFromAllowlist\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setEthStakeInbox\",\"inputs\":[{\"name\":\"inbox\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOmniChainId\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOmniPortal\",\"inputs\":[{\"name\":\"portal\",\"type\":\"address\",\"internalType\":\"contractIOmniPortal\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyParams\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIOmniAVS.StrategyParam[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setXcallGasLimits\",\"inputs\":[{\"name\":\"base\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"perOperator\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyParams\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIOmniAVS.StrategyParam[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"syncWithOmni\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"xcallBaseGasLimit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"xcallGasLimitPerOperator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAdded\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAllowed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDisallowed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemoved\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620028fa380380620028fa833981016040819052620000349162000133565b6001600160a01b03808316608052811660a0526200005162000059565b505062000172565b600054610100900460ff1615620000c65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000118576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013057600080fd5b50565b600080604083850312156200014757600080fd5b825162000154816200011a565b602084015190925062000167816200011a565b809150509250929050565b60805160a05161273f620001bb600039600081816103d1015281816109ed01528181610b8c0152610d6701526000818161079001528181611adf0152611ba9015261273f6000f3fe6080604052600436106101cd5760003560e01c8063750521f5116100f7578063b98912b011610095578063e673df8a11610064578063e673df8a14610555578063f2fde38b14610577578063f57f33d014610597578063f8e86ece146105b957600080fd5b8063b98912b0146104dd578063c4d179cf14610500578063d17efb3614610520578063e481af9d1461054057600080fd5b80638da5cb5b116100d15780638da5cb5b1461045f5780639926ee7d1461047d578063a364f4da1461049d578063ae30f16d146104bd57600080fd5b8063750521f51461040a5780637815873d1461042a5780638456cb591461044a57600080fd5b80633f4ba83a1161016f5780635c975abb1161013e5780635c975abb1461038a5780635da93d7e146103a25780636b3aa72e146103c2578063715018a6146103f557600080fd5b80633f4ba83a1461030e5780634a8fa4591461032357806354c74ed3146103435780635c78b0e21461036a57600080fd5b8063243d51c7116101ab578063243d51c71461023957806329d0fdc01461026057806333cfb7b7146102a957806339acf9f1146102d657600080fd5b80630c415884146101d2578063110ff5f1146101f457806313efbe9214610231575b600080fd5b3480156101de57600080fd5b506101f26101ed366004611e4c565b6105d9565b005b34801561020057600080fd5b50609a54610214906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b6101f2610603565b34801561024557600080fd5b50609a5461021490600160801b90046001600160401b031681565b34801561026c57600080fd5b5061029961027b366004611e4c565b6001600160a01b031660009081526099602052604090205460ff1690565b6040519015158152602001610228565b3480156102b557600080fd5b506102c96102c4366004611e4c565b6106ec565b6040516102289190611e69565b3480156102e257600080fd5b50609c546102f6906001600160a01b031681565b6040516001600160a01b039091168152602001610228565b34801561031a57600080fd5b506101f2610851565b34801561032f57600080fd5b506101f261033e366004611ed2565b610863565b34801561034f57600080fd5b50609a5461021490600160401b90046001600160401b031681565b34801561037657600080fd5b506101f2610385366004611f05565b6108c4565b34801561039657600080fd5b5060655460ff16610299565b3480156103ae57600080fd5b506101f26103bd366004611e4c565b6108ef565b3480156103ce57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102f6565b34801561040157600080fd5b506101f26109bc565b34801561041657600080fd5b506101f2610425366004611fe5565b6109ce565b34801561043657600080fd5b50609b546102f6906001600160a01b031681565b34801561045657600080fd5b506101f2610a57565b34801561046b57600080fd5b506033546001600160a01b03166102f6565b34801561048957600080fd5b506101f2610498366004612035565b610a67565b3480156104a957600080fd5b506101f26104b8366004611e4c565b610c7e565b3480156104c957600080fd5b506101f26104d836600461212a565b610e03565b3480156104e957600080fd5b506104f2610e19565b604051908152602001610228565b34801561050c57600080fd5b506101f261051b36600461216b565b610f05565b34801561052c57600080fd5b506101f261053b366004611e4c565b6110a0565b34801561054c57600080fd5b506102c9611118565b34801561056157600080fd5b5061056a6111e0565b60405161022891906121f6565b34801561058357600080fd5b506101f2610592366004611e4c565b6111ef565b3480156105a357600080fd5b506105ac611268565b6040516102289190612265565b3480156105c557600080fd5b506101f26105d4366004611e4c565b6112e4565b6105e16113f7565b609c80546001600160a01b0319166001600160a01b0392909216919091179055565b61060b611451565b6000610615611497565b609c54609a54609b546040519394506001600160a01b03928316936370e8b56a9334936001600160401b03169216906333364ffb60e11b9061065b9088906024016121f6565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091528651610698906115ec565b6040518663ffffffff1660e01b81526004016106b79493929190612306565b6000604051808303818588803b1580156106d057600080fd5b505af11580156106e4573d6000803e3d6000fd5b505050505050565b6097546060906000906001600160401b0381111561070c5761070c611f20565b604051908082528060200260200182016040528015610735578160200160208202803683370190505b50905060005b60975481101561084a5760006097828154811061075a5761075a61234b565b600091825260208220015460405163778e55f360e01b81526001600160a01b0388811660048301529182166024820181905293507f00000000000000000000000000000000000000000000000000000000000000009091169063778e55f390604401602060405180830381865afa1580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190612361565b111561083757808383815181106108165761081661234b565b60200260200101906001600160a01b031690816001600160a01b0316815250505b508061084281612390565b91505061073b565b5092915050565b6108596113f7565b610861611627565b565b61086b6113f7565b609a805477ffffffffffffffffffffffffffffffff00000000000000001916600160801b6001600160401b03948516026fffffffffffffffff0000000000000000191617600160401b9290931691909102919091179055565b6108cc6113f7565b609a805467ffffffffffffffff19166001600160401b0392909216919091179055565b6108f76113f7565b6001600160a01b03811660009081526099602052604090205460ff166109645760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a206e6f7420696e20616c6c6f776c6973740000000000000060448201526064015b60405180910390fd5b6001600160a01b038116600081815260996020908152604091829020805460ff1916905590519182527f8560daa191dd8e6fba276b053006b3990c46c94b842f85490f52c49b15cfe5cb91015b60405180910390a150565b6109c46113f7565b6108616000611679565b6109d66113f7565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590610a229084906004016123ab565b600060405180830381600087803b158015610a3c57600080fd5b505af1158015610a50573d6000803e3d6000fd5b5050505050565b610a5f6113f7565b6108616116cb565b610a6f611451565b336001600160a01b03831614610ac05760405162461bcd60e51b815260206004820152601660248201527527b6b734a0ab299d1037b7363c9037b832b930ba37b960511b604482015260640161095b565b6001600160a01b03821660009081526099602052604090205460ff16610b1f5760405162461bcd60e51b815260206004820152601460248201527313db5b9a505594ce881b9bdd08185b1b1bddd95960621b604482015260640161095b565b610b2882611708565b15610b755760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e694156533a20616c726561647920616e206f70657261746f7200000000604482015260640161095b565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90610bc390859085906004016123be565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b5050609880546001810182556000919091527f2237a976fa961f5921fd19f2b03c925c725d77b20ce8f790c19709c03de4d8140180546001600160a01b0319166001600160a01b03861617905550610c469050565b6040516001600160a01b038316907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a25050565b610c86611451565b336001600160a01b0382161480610ca757506033546001600160a01b031633145b610cf35760405162461bcd60e51b815260206004820152601f60248201527f4f6d6e694156533a206f6e6c79206f70657261746f72206f72206f776e657200604482015260640161095b565b610cfc81611708565b610d485760405162461bcd60e51b815260206004820152601860248201527f4f6d6e694156533a206e6f7420616e206f70657261746f720000000000000000604482015260640161095b565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015610dab57600080fd5b505af1158015610dbf573d6000803e3d6000fd5b50505050610dcc81611772565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b610e0b6113f7565b610e15828261187a565b5050565b600080610e24611497565b609c54609a546040519293506001600160a01b0390911691638dd9523c916001600160401b0316906333364ffb60e11b90610e639086906024016121f6565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091528451610ea0906115ec565b6040518463ffffffff1660e01b8152600401610ebe93929190612409565b602060405180830381865afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190612361565b91505090565b600054610100900460ff1615808015610f255750600054600160ff909116105b80610f3f5750303b158015610f3f575060005460ff166001145b610fa25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161095b565b6000805460ff191660011790558015610fc5576000805461ff0019166101001790555b609c80546001600160a01b03199081166001600160a01b0389811691909117909255609a80546001600160401b0389166fffffffffffffffffffffffffffffffff199091161769c35000000000000000001767ffffffffffffffff60801b191661249f60831b179055609b805490911691861691909117905561104787611679565b611051838361187a565b8015611097576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6110a86113f7565b6001600160a01b0381166110f65760405162461bcd60e51b81526020600482015260156024820152744f6d6e694156533a207a65726f206164647265737360581b604482015260640161095b565b609b80546001600160a01b0319166001600160a01b0392909216919091179055565b6097546060906000906001600160401b0381111561113857611138611f20565b604051908082528060200260200182016040528015611161578160200160208202803683370190505b50905060005b6097548110156111da57609781815481106111845761118461234b565b60009182526020909120015482516001600160a01b03909116908390839081106111b0576111b061234b565b6001600160a01b0390921660209283029190910190910152806111d281612390565b915050611167565b50919050565b60606111ea611497565b905090565b6111f76113f7565b6001600160a01b03811661125c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095b565b61126581611679565b50565b60606097805480602002602001604051908101604052809291908181526020016000905b828210156112db57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161128c565b50505050905090565b6112ec6113f7565b6001600160a01b03811661133a5760405162461bcd60e51b81526020600482015260156024820152744f6d6e694156533a207a65726f206164647265737360581b604482015260640161095b565b6001600160a01b03811660009081526099602052604090205460ff16156113a35760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e694156533a20616c726561647920696e20616c6c6f776c697374000000604482015260640161095b565b6001600160a01b038116600081815260996020908152604091829020805460ff1916600117905590519182527fdde65206cdee4ea27ef1b170724ba50b41ad09a3bf2dda12935fc40c4dbf6e7591016109b1565b6033546001600160a01b031633146108615760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161095b565b60655460ff16156108615760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161095b565b6098546060906000906001600160401b038111156114b7576114b7611f20565b60405190808252806020026020018201604052801561150257816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816114d55790505b50905060005b81518110156111da576000609882815481106115265761152661234b565b60009182526020822001546001600160a01b0316915061154582611a47565b9050600061155283611b83565b90506000816001600160601b0316836001600160601b031611611576576000611580565b611580828461243f565b90506040518060600160405280856001600160a01b03168152602001826001600160601b03168152602001836001600160601b03168152508686815181106115ca576115ca61234b565b60200260200101819052505050505080806115e490612390565b915050611508565b609a546000906001600160401b03600160801b820481169161161791600160401b9091041684612467565b6116219190612496565b92915050565b61162f611d8d565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6116d3611451565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861165c3390565b6000805b60985481101561176957826001600160a01b0316609882815481106117335761173361234b565b6000918252602090912001546001600160a01b031614156117575750600192915050565b8061176181612390565b91505061170c565b50600092915050565b60005b609854811015610e1557816001600160a01b03166098828154811061179c5761179c61234b565b6000918252602090912001546001600160a01b0316141561186857609880546117c7906001906124c1565b815481106117d7576117d761234b565b600091825260209091200154609880546001600160a01b0390921691839081106118035761180361234b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506098805480611842576118426124d8565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061187281612390565b915050611775565b61188660976000611e05565b60005b81811015611a425760008383838181106118a5576118a561234b565b6118bb9260206040909202019081019150611e4c565b6001600160a01b031614156119125760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a206e6f207a65726f20737472617465677900000000000000604482015260640161095b565b600061191f8260016124ee565b90505b828110156119ec5783838281811061193c5761193c61234b565b6119529260206040909202019081019150611e4c565b6001600160a01b031684848481811061196d5761196d61234b565b6119839260206040909202019081019150611e4c565b6001600160a01b031614156119da5760405162461bcd60e51b815260206004820152601e60248201527f4f6d6e694156533a206e6f206475706c69636174652073747261746567790000604482015260640161095b565b806119e481612390565b915050611922565b506097838383818110611a0157611a0161234b565b83546001810185556000948552602090942060409091029290920192919091019050611a2d8282612506565b50508080611a3a90612390565b915050611889565b505050565b6040805180820190915260008082526020820181905290819060005b609754811015611b7a5760978181548110611a8057611a8061234b565b6000918252602080832060408051808201825293909101546001600160a01b03808216808652600160a01b9092046001600160601b031693850193909352905163778e55f360e01b8152898316600482015260248101919091529194507f0000000000000000000000000000000000000000000000000000000000000000169063778e55f390604401602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a9190612361565b9050611b5a818460200151611dd6565b611b649085612554565b9350508080611b7290612390565b915050611a63565b50909392505050565b6040516367c0439f60e11b81526001600160a01b038281166004830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063cf80873e90602401600060405180830381865afa158015611bf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c1a9190810190612604565b90925090506000805b8351811015611d84576000848281518110611c4057611c4061234b565b60200260200101519050611c79604051806040016040528060006001600160a01b0316815260200160006001600160601b031681525090565b60005b609754811015611d2557826001600160a01b031660978281548110611ca357611ca361234b565b6000918252602090912001546001600160a01b03161415611d135760978181548110611cd157611cd161234b565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529150611d25565b80611d1d81612390565b915050611c7c565b5080516001600160a01b0316611d3c575050611d72565b611d63858481518110611d5157611d5161234b565b60200260200101518260200151611dd6565b611d6d9085612554565b935050505b80611d7c81612390565b915050611c23565b50949350505050565b60655460ff166108615760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161095b565b6000670de0b6b3a7640000611df46001600160601b038416856126c8565b611dfe91906126e7565b9392505050565b508054600082559060005260206000209081019061126591905b80821115611e335760008155600101611e1f565b5090565b6001600160a01b038116811461126557600080fd5b600060208284031215611e5e57600080fd5b8135611dfe81611e37565b6020808252825182820181905260009190848201906040850190845b81811015611eaa5783516001600160a01b031683529284019291840191600101611e85565b50909695505050505050565b80356001600160401b0381168114611ecd57600080fd5b919050565b60008060408385031215611ee557600080fd5b611eee83611eb6565b9150611efc60208401611eb6565b90509250929050565b600060208284031215611f1757600080fd5b611dfe82611eb6565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715611f5857611f58611f20565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611f8657611f86611f20565b604052919050565b60006001600160401b03831115611fa757611fa7611f20565b611fba601f8401601f1916602001611f5e565b9050828152838383011115611fce57600080fd5b828260208301376000602084830101529392505050565b600060208284031215611ff757600080fd5b81356001600160401b0381111561200d57600080fd5b8201601f8101841361201e57600080fd5b61202d84823560208401611f8e565b949350505050565b6000806040838503121561204857600080fd5b823561205381611e37565b915060208301356001600160401b038082111561206f57600080fd5b908401906060828703121561208357600080fd5b61208b611f36565b82358281111561209a57600080fd5b83019150601f820187136120ad57600080fd5b6120bc87833560208501611f8e565b815260208301356020820152604083013560408201528093505050509250929050565b60008083601f8401126120f157600080fd5b5081356001600160401b0381111561210857600080fd5b6020830191508360208260061b850101111561212357600080fd5b9250929050565b6000806020838503121561213d57600080fd5b82356001600160401b0381111561215357600080fd5b61215f858286016120df565b90969095509350505050565b60008060008060008060a0878903121561218457600080fd5b863561218f81611e37565b9550602087013561219f81611e37565b94506121ad60408801611eb6565b935060608701356121bd81611e37565b925060808701356001600160401b038111156121d857600080fd5b6121e489828a016120df565b979a9699509497509295939492505050565b602080825282518282018190526000919060409081850190868401855b8281101561225857815180516001600160a01b03168552868101516001600160601b039081168887015290860151168585015260609093019290850190600101612213565b5091979650505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561225857815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101612282565b6000815180845260005b818110156122df576020818501810151868301820152016122c3565b818111156122f1576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160401b03808716835260018060a01b03861660208401526080604084015261233760808401866122b9565b915080841660608401525095945050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561237357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156123a4576123a461237a565b5060010190565b602081526000611dfe60208301846122b9565b60018060a01b03831681526040602082015260008251606060408401526123e860a08401826122b9565b90506020840151606084015260408401516080840152809150509392505050565b60006001600160401b0380861683526060602084015261242c60608401866122b9565b9150808416604084015250949350505050565b60006001600160601b038381169083168181101561245f5761245f61237a565b039392505050565b60006001600160401b038083168185168183048111821515161561248d5761248d61237a565b02949350505050565b60006001600160401b038083168185168083038211156124b8576124b861237a565b01949350505050565b6000828210156124d3576124d361237a565b500390565b634e487b7160e01b600052603160045260246000fd5b600082198211156125015761250161237a565b500190565b813561251181611e37565b81546001600160a01b03199081166001600160a01b0392909216918217835560208401356001600160601b038116811461254a57600080fd5b60a01b1617905550565b60006001600160601b038083168185168083038211156124b8576124b861237a565b60006001600160401b0382111561258f5761258f611f20565b5060051b60200190565b600082601f8301126125aa57600080fd5b815160206125bf6125ba83612576565b611f5e565b82815260059290921b840181019181810190868411156125de57600080fd5b8286015b848110156125f957805183529183019183016125e2565b509695505050505050565b6000806040838503121561261757600080fd5b82516001600160401b038082111561262e57600080fd5b818501915085601f83011261264257600080fd5b815160206126526125ba83612576565b82815260059290921b8401810191818101908984111561267157600080fd5b948201945b8386101561269857855161268981611e37565b82529482019490820190612676565b918801519196509093505050808211156126b157600080fd5b506126be85828601612599565b9150509250929050565b60008160001904831182151516156126e2576126e261237a565b500290565b60008261270457634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122060592ff8090cede3f89ef9137e5b94f3e8b27f3b1e5b51095a20ebc91ab7076564736f6c634300080c0033", + Bin: "0x60c06040523480156200001157600080fd5b506040516200274938038062002749833981016040819052620000349162000133565b6001600160a01b03808316608052811660a0526200005162000059565b505062000172565b600054610100900460ff1615620000c65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000118576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013057600080fd5b50565b600080604083850312156200014757600080fd5b825162000154816200011a565b602084015190925062000167816200011a565b809150509250929050565b60805160a051612595620001b4600039600081816103d1015281816108b901528181610aa30152610c360152600081816119700152611a2f01526125956000f3fe6080604052600436106101cd5760003560e01c8063750521f5116100f7578063b98912b011610095578063e673df8a11610064578063e673df8a14610555578063f2fde38b14610577578063f57f33d014610597578063f8e86ece146105b957600080fd5b8063b98912b0146104dd578063c4d179cf14610500578063d17efb3614610520578063e481af9d1461054057600080fd5b80638da5cb5b116100d15780638da5cb5b1461045f5780639926ee7d1461047d578063a364f4da1461049d578063ae30f16d146104bd57600080fd5b8063750521f51461040a5780637815873d1461042a5780638456cb591461044a57600080fd5b80633f4ba83a1161016f5780635c975abb1161013e5780635c975abb1461038a5780635da93d7e146103a25780636b3aa72e146103c2578063715018a6146103f557600080fd5b80633f4ba83a1461030e5780634a8fa4591461032357806354c74ed3146103435780635c78b0e21461036a57600080fd5b8063243d51c7116101ab578063243d51c71461023957806329d0fdc01461026057806333cfb7b7146102a957806339acf9f1146102d657600080fd5b80630c415884146101d2578063110ff5f1146101f457806313efbe9214610231575b600080fd5b3480156101de57600080fd5b506101f26101ed366004611cbd565b6105d9565b005b34801561020057600080fd5b50609a54610214906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b6101f2610603565b34801561024557600080fd5b50609a5461021490600160801b90046001600160401b031681565b34801561026c57600080fd5b5061029961027b366004611cbd565b6001600160a01b031660009081526099602052604090205460ff1690565b6040519015158152602001610228565b3480156102b557600080fd5b506102c96102c4366004611cbd565b6106ec565b6040516102289190611cda565b3480156102e257600080fd5b50609c546102f6906001600160a01b031681565b6040516001600160a01b039091168152602001610228565b34801561031a57600080fd5b506101f261071d565b34801561032f57600080fd5b506101f261033e366004611d43565b61072f565b34801561034f57600080fd5b50609a5461021490600160401b90046001600160401b031681565b34801561037657600080fd5b506101f2610385366004611d76565b610790565b34801561039657600080fd5b5060655460ff16610299565b3480156103ae57600080fd5b506101f26103bd366004611cbd565b6107bb565b3480156103ce57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102f6565b34801561040157600080fd5b506101f2610888565b34801561041657600080fd5b506101f2610425366004611e56565b61089a565b34801561043657600080fd5b50609b546102f6906001600160a01b031681565b34801561045657600080fd5b506101f2610923565b34801561046b57600080fd5b506033546001600160a01b03166102f6565b34801561048957600080fd5b506101f2610498366004611ea6565b610933565b3480156104a957600080fd5b506101f26104b8366004611cbd565b610b44565b3480156104c957600080fd5b506101f26104d8366004611f9b565b610cc9565b3480156104e957600080fd5b506104f2610cdf565b604051908152602001610228565b34801561050c57600080fd5b506101f261051b366004611fdc565b610dcb565b34801561052c57600080fd5b506101f261053b366004611cbd565b610f66565b34801561054c57600080fd5b506102c9610fde565b34801561056157600080fd5b5061056a610fed565b6040516102289190612067565b34801561058357600080fd5b506101f2610592366004611cbd565b610ff7565b3480156105a357600080fd5b506105ac611070565b60405161022891906120d6565b3480156105c557600080fd5b506101f26105d4366004611cbd565b6110ec565b6105e16111ff565b609c80546001600160a01b0319166001600160a01b0392909216919091179055565b61060b611259565b600061061561129f565b609c54609a54609b546040519394506001600160a01b03928316936370e8b56a9334936001600160401b03169216906333364ffb60e11b9061065b908890602401612067565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091528651610698906113f4565b6040518663ffffffff1660e01b81526004016106b79493929190612177565b6000604051808303818588803b1580156106d057600080fd5b505af11580156106e4573d6000803e3d6000fd5b505050505050565b60606106f782611429565b61070f57505060408051600081526020810190915290565b610717611489565b92915050565b6107256111ff565b61072d611541565b565b6107376111ff565b609a805477ffffffffffffffffffffffffffffffff00000000000000001916600160801b6001600160401b03948516026fffffffffffffffff0000000000000000191617600160401b9290931691909102919091179055565b6107986111ff565b609a805467ffffffffffffffff19166001600160401b0392909216919091179055565b6107c36111ff565b6001600160a01b03811660009081526099602052604090205460ff166108305760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a206e6f7420696e20616c6c6f776c6973740000000000000060448201526064015b60405180910390fd5b6001600160a01b038116600081815260996020908152604091829020805460ff1916905590519182527f8560daa191dd8e6fba276b053006b3990c46c94b842f85490f52c49b15cfe5cb91015b60405180910390a150565b6108906111ff565b61072d6000611593565b6108a26111ff565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906108ee9084906004016121bc565b600060405180830381600087803b15801561090857600080fd5b505af115801561091c573d6000803e3d6000fd5b5050505050565b61092b6111ff565b61072d6115e5565b61093b611259565b336001600160a01b0383161461098c5760405162461bcd60e51b815260206004820152601660248201527527b6b734a0ab299d1037b7363c9037b832b930ba37b960511b6044820152606401610827565b6001600160a01b03821660009081526099602052604090205460ff166109eb5760405162461bcd60e51b815260206004820152601460248201527313db5b9a505594ce881b9bdd08185b1b1bddd95960621b6044820152606401610827565b6109f482611429565b15610a415760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e694156533a20616c726561647920616e206f70657261746f72000000006044820152606401610827565b609880546001810182556000919091527f2237a976fa961f5921fd19f2b03c925c725d77b20ce8f790c19709c03de4d8140180546001600160a01b0319166001600160a01b038416179055604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90610ada90859085906004016121cf565b600060405180830381600087803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b50506040516001600160a01b03851692507fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d9150600090a25050565b610b4c611259565b336001600160a01b0382161480610b6d57506033546001600160a01b031633145b610bb95760405162461bcd60e51b815260206004820152601f60248201527f4f6d6e694156533a206f6e6c79206f70657261746f72206f72206f776e6572006044820152606401610827565b610bc281611429565b610c0e5760405162461bcd60e51b815260206004820152601860248201527f4f6d6e694156533a206e6f7420616e206f70657261746f7200000000000000006044820152606401610827565b610c1781611622565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015610c7a57600080fd5b505af1158015610c8e573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b610cd16111ff565b610cdb8282611720565b5050565b600080610cea61129f565b609c54609a546040519293506001600160a01b0390911691638dd9523c916001600160401b0316906333364ffb60e11b90610d29908690602401612067565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091528451610d66906113f4565b6040518463ffffffff1660e01b8152600401610d849392919061221a565b602060405180830381865afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190612250565b91505090565b600054610100900460ff1615808015610deb5750600054600160ff909116105b80610e055750303b158015610e05575060005460ff166001145b610e685760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610827565b6000805460ff191660011790558015610e8b576000805461ff0019166101001790555b609c80546001600160a01b03199081166001600160a01b0389811691909117909255609a80546001600160401b0389166fffffffffffffffffffffffffffffffff199091161769c35000000000000000001767ffffffffffffffff60801b191661249f60831b179055609b8054909116918616919091179055610f0d87611593565b610f178383611720565b8015610f5d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610f6e6111ff565b6001600160a01b038116610fbc5760405162461bcd60e51b81526020600482015260156024820152744f6d6e694156533a207a65726f206164647265737360581b6044820152606401610827565b609b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060610fe8611489565b905090565b6060610fe861129f565b610fff6111ff565b6001600160a01b0381166110645760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610827565b61106d81611593565b50565b60606097805480602002602001604051908101604052809291908181526020016000905b828210156110e357600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101611094565b50505050905090565b6110f46111ff565b6001600160a01b0381166111425760405162461bcd60e51b81526020600482015260156024820152744f6d6e694156533a207a65726f206164647265737360581b6044820152606401610827565b6001600160a01b03811660009081526099602052604090205460ff16156111ab5760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e694156533a20616c726561647920696e20616c6c6f776c6973740000006044820152606401610827565b6001600160a01b038116600081815260996020908152604091829020805460ff1916600117905590519182527fdde65206cdee4ea27ef1b170724ba50b41ad09a3bf2dda12935fc40c4dbf6e75910161087d565b6033546001600160a01b0316331461072d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610827565b60655460ff161561072d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610827565b6098546060906000906001600160401b038111156112bf576112bf611d91565b60405190808252806020026020018201604052801561130a57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816112dd5790505b50905060005b81518110156113ee5760006098828154811061132e5761132e612269565b60009182526020822001546001600160a01b0316915061134d826118d8565b9050600061135a83611a09565b90506000816001600160601b0316836001600160601b03161161137e576000611388565b6113888284612295565b90506040518060600160405280856001600160a01b03168152602001826001600160601b03168152602001836001600160601b03168152508686815181106113d2576113d2612269565b6020026020010181905250848060010195505050505050611310565b50919050565b609a546000906001600160401b03600160801b820481169161141f91600160401b90910416846122bd565b61071791906122ec565b6000805b60985481101561148057826001600160a01b03166098828154811061145457611454612269565b6000918252602090912001546001600160a01b031614156114785750600192915050565b60010161142d565b50600092915050565b6097546060906000906001600160401b038111156114a9576114a9611d91565b6040519080825280602002602001820160405280156114d2578160200160208202803683370190505b50905060005b6097548110156113ee57609781815481106114f5576114f5612269565b60009182526020909120015482516001600160a01b039091169083908390811061152157611521612269565b6001600160a01b03909216602092830291909101909101526001016114d8565b611549611bfe565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6115ed611259565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586115763390565b60005b609854811015610cdb57816001600160a01b03166098828154811061164c5761164c612269565b6000918252602090912001546001600160a01b03161415611718576098805461167790600190612317565b8154811061168757611687612269565b600091825260209091200154609880546001600160a01b0390921691839081106116b3576116b3612269565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060988054806116f2576116f261232e565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b600101611625565b61172c60976000611c76565b60005b818110156118d357600083838381811061174b5761174b612269565b6117619260206040909202019081019150611cbd565b6001600160a01b031614156117b85760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a206e6f207a65726f207374726174656779000000000000006044820152606401610827565b60006117c5826001612344565b90505b82811015611888578383828181106117e2576117e2612269565b6117f89260206040909202019081019150611cbd565b6001600160a01b031684848481811061181357611813612269565b6118299260206040909202019081019150611cbd565b6001600160a01b031614156118805760405162461bcd60e51b815260206004820152601e60248201527f4f6d6e694156533a206e6f206475706c696361746520737472617465677900006044820152606401610827565b6001016117c8565b50609783838381811061189d5761189d612269565b835460018101855560009485526020909420604090910292909201929190910190506118c9828261235c565b505060010161172f565b505050565b6040805180820190915260008082526020820181905290819060005b609754811015611a00576097818154811061191157611911612269565b6000918252602080832060408051808201825293909101546001600160a01b03808216808652600160a01b9092046001600160601b031693850193909352905163778e55f360e01b8152898316600482015260248101919091529194507f0000000000000000000000000000000000000000000000000000000000000000169063778e55f390604401602060405180830381865afa1580156119b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119db9190612250565b90506119eb818460200151611c47565b6119f590856123aa565b9350506001016118f4565b50909392505050565b6040516367c0439f60e11b81526001600160a01b038281166004830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063cf80873e90602401600060405180830381865afa158015611a78573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa0919081019061245a565b90925090506000805b8351811015611bf5576000848281518110611ac657611ac6612269565b60200260200101519050611aff604051806040016040528060006001600160a01b0316815260200160006001600160601b031681525090565b60005b609754811015611ba157826001600160a01b031660978281548110611b2957611b29612269565b6000918252602090912001546001600160a01b03161415611b995760978181548110611b5757611b57612269565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529150611ba1565b600101611b02565b5080516001600160a01b0316611bb8575050611aa9565b611bdf858481518110611bcd57611bcd612269565b60200260200101518260200151611c47565b611be990856123aa565b93505050600101611aa9565b50949350505050565b60655460ff1661072d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610827565b6000670de0b6b3a7640000611c656001600160601b0384168561251e565b611c6f919061253d565b9392505050565b508054600082559060005260206000209081019061106d91905b80821115611ca45760008155600101611c90565b5090565b6001600160a01b038116811461106d57600080fd5b600060208284031215611ccf57600080fd5b8135611c6f81611ca8565b6020808252825182820181905260009190848201906040850190845b81811015611d1b5783516001600160a01b031683529284019291840191600101611cf6565b50909695505050505050565b80356001600160401b0381168114611d3e57600080fd5b919050565b60008060408385031215611d5657600080fd5b611d5f83611d27565b9150611d6d60208401611d27565b90509250929050565b600060208284031215611d8857600080fd5b611c6f82611d27565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715611dc957611dc9611d91565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611df757611df7611d91565b604052919050565b60006001600160401b03831115611e1857611e18611d91565b611e2b601f8401601f1916602001611dcf565b9050828152838383011115611e3f57600080fd5b828260208301376000602084830101529392505050565b600060208284031215611e6857600080fd5b81356001600160401b03811115611e7e57600080fd5b8201601f81018413611e8f57600080fd5b611e9e84823560208401611dff565b949350505050565b60008060408385031215611eb957600080fd5b8235611ec481611ca8565b915060208301356001600160401b0380821115611ee057600080fd5b9084019060608287031215611ef457600080fd5b611efc611da7565b823582811115611f0b57600080fd5b83019150601f82018713611f1e57600080fd5b611f2d87833560208501611dff565b815260208301356020820152604083013560408201528093505050509250929050565b60008083601f840112611f6257600080fd5b5081356001600160401b03811115611f7957600080fd5b6020830191508360208260061b8501011115611f9457600080fd5b9250929050565b60008060208385031215611fae57600080fd5b82356001600160401b03811115611fc457600080fd5b611fd085828601611f50565b90969095509350505050565b60008060008060008060a08789031215611ff557600080fd5b863561200081611ca8565b9550602087013561201081611ca8565b945061201e60408801611d27565b9350606087013561202e81611ca8565b925060808701356001600160401b0381111561204957600080fd5b61205589828a01611f50565b979a9699509497509295939492505050565b602080825282518282018190526000919060409081850190868401855b828110156120c957815180516001600160a01b03168552868101516001600160601b039081168887015290860151168585015260609093019290850190600101612084565b5091979650505050505050565b602080825282518282018190526000919060409081850190868401855b828110156120c957815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016120f3565b6000815180845260005b8181101561215057602081850181015186830182015201612134565b81811115612162576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160401b03808716835260018060a01b0386166020840152608060408401526121a8608084018661212a565b915080841660608401525095945050505050565b602081526000611c6f602083018461212a565b60018060a01b03831681526040602082015260008251606060408401526121f960a084018261212a565b90506020840151606084015260408401516080840152809150509392505050565b60006001600160401b0380861683526060602084015261223d606084018661212a565b9150808416604084015250949350505050565b60006020828403121561226257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160601b03838116908316818110156122b5576122b561227f565b039392505050565b60006001600160401b03808316818516818304811182151516156122e3576122e361227f565b02949350505050565b60006001600160401b0380831681851680830382111561230e5761230e61227f565b01949350505050565b6000828210156123295761232961227f565b500390565b634e487b7160e01b600052603160045260246000fd5b600082198211156123575761235761227f565b500190565b813561236781611ca8565b81546001600160a01b03199081166001600160a01b0392909216918217835560208401356001600160601b03811681146123a057600080fd5b60a01b1617905550565b60006001600160601b0380831681851680830382111561230e5761230e61227f565b60006001600160401b038211156123e5576123e5611d91565b5060051b60200190565b600082601f83011261240057600080fd5b81516020612415612410836123cc565b611dcf565b82815260059290921b8401810191818101908684111561243457600080fd5b8286015b8481101561244f5780518352918301918301612438565b509695505050505050565b6000806040838503121561246d57600080fd5b82516001600160401b038082111561248457600080fd5b818501915085601f83011261249857600080fd5b815160206124a8612410836123cc565b82815260059290921b840181019181810190898411156124c757600080fd5b948201945b838610156124ee5785516124df81611ca8565b825294820194908201906124cc565b9188015191965090935050508082111561250757600080fd5b50612514858286016123ef565b9150509250929050565b60008160001904831182151516156125385761253861227f565b500290565b60008261255a57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fd4618ae6a6976b4a693de7d01bfef7433733f7c4dee4a642fc73ba43527360e64736f6c634300080c0033", } // OmniAVSABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/omniportal.go b/contracts/bindings/omniportal.go index 498ea0e8b..6f59af118 100644 --- a/contracts/bindings/omniportal.go +++ b/contracts/bindings/omniportal.go @@ -79,7 +79,7 @@ type XTypesValidator struct { // OmniPortalMetaData contains all meta data concerning the OmniPortal contract. var OmniPortalMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"XMSG_DEFAULT_GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"XMSG_MAX_GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"XMSG_MIN_GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"XSUB_QUORUM_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"XSUB_QUORUM_NUMERATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"chainId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"collectFees\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"feeFor\",\"inputs\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"feeFor\",\"inputs\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"feeOracle\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inXStreamBlockHeight\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inXStreamOffset\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"feeOracle_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"valSetId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"validators\",\"type\":\"tuple[]\",\"internalType\":\"structXTypes.Validator[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"power\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isXCall\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"outXStreamOffset\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setFeeOracle\",\"inputs\":[{\"name\":\"feeOracle_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"xcall\",\"inputs\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"xcall\",\"inputs\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"xmsg\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structXTypes.MsgShort\",\"components\":[{\"name\":\"sourceChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"xsubmit\",\"inputs\":[{\"name\":\"xsub\",\"type\":\"tuple\",\"internalType\":\"structXTypes.Submission\",\"components\":[{\"name\":\"attestationRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorSetId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHeader\",\"type\":\"tuple\",\"internalType\":\"structXTypes.BlockHeader\",\"components\":[{\"name\":\"sourceChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"msgs\",\"type\":\"tuple[]\",\"internalType\":\"structXTypes.Msg[]\",\"components\":[{\"name\":\"sourceChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"streamOffset\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"proofFlags\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"signatures\",\"type\":\"tuple[]\",\"internalType\":\"structXTypes.SigTuple[]\",\"components\":[{\"name\":\"validatorAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"FeeOracleChanged\",\"inputs\":[{\"name\":\"oldFeeOracle\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newFeeOracle\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeesCollected\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorSetAdded\",\"inputs\":[{\"name\":\"setId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"XMsg\",\"inputs\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"streamOffset\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"gasLimit\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"XReceipt\",\"inputs\":[{\"name\":\"sourceChainId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"streamOffset\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"gasUsed\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"relayer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"success\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false}]", - Bin: "0x60a06040523480156200001157600080fd5b506200001c6200002f565b6001600160401b034616608052620000f0565b600054610100900460ff16156200009c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000ee576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516126c86200011a6000396000818161036101528181610b430152610f8b01526126c86000f3fe6080604052600436106101405760003560e01c806390ab417c116100b6578063a6cfb9781161006f578063a6cfb97814610407578063a8a989621461041c578063b58e964f1461043c578063d14e731314610472578063f2fde38b14610492578063fa590d14146104b257600080fd5b806390ab417c146103015780639a8a05921461034f5780639c346d99146103835780639dad9aae146103b9578063a2cc111b146103d0578063a480ca79146103e757600080fd5b806355e2448e1161010857806355e2448e1461025157806370e8b56a1461027b578063715018a61461028e578063738ec47c146102a35780638da5cb5b146102c35780638dd9523c146102e157600080fd5b80632f32700e146101455780634115ab79146101af5780634f93e91f146101dd578063500b19e71461020457806350e646dd1461023c575b600080fd5b34801561015157600080fd5b50604080518082018252600080825260209182015281518083018352606c546001600160401b0381168083526001600160a01b03600160401b9092048216928401928352845190815291511691810191909152015b60405180910390f35b3480156101bb57600080fd5b506101cf6101ca366004611e48565b6104c8565b6040519081526020016101a6565b3480156101e957600080fd5b506101f2600381565b60405160ff90911681526020016101a6565b34801561021057600080fd5b50606554610224906001600160a01b031681565b6040516001600160a01b0390911681526020016101a6565b61024f61024a366004611eb1565b61054d565b005b34801561025d57600080fd5b50606c546040516001600160401b03909116151581526020016101a6565b61024f610289366004611f11565b610564565b34801561029a57600080fd5b5061024f610579565b3480156102af57600080fd5b5061024f6102be366004611f86565b61058d565b3480156102cf57600080fd5b506033546001600160a01b0316610224565b3480156102ed57600080fd5b506101cf6102fc366004611fc1565b61076c565b34801561030d57600080fd5b5061033761031c366004612025565b6066602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020016101a6565b34801561035b57600080fd5b506103377f000000000000000000000000000000000000000000000000000000000000000081565b34801561038f57600080fd5b5061033761039e366004612025565b6068602052600090815260409020546001600160401b031681565b3480156103c557600080fd5b5061033762030d4081565b3480156103dc57600080fd5b50610337624c4b4081565b3480156103f357600080fd5b5061024f610402366004612040565b6107ed565b34801561041357600080fd5b506101f2600281565b34801561042857600080fd5b5061024f610437366004612040565b610875565b34801561044857600080fd5b50610337610457366004612025565b6067602052600090815260409020546001600160401b031681565b34801561047e57600080fd5b5061024f61048d3660046120c9565b610889565b34801561049e57600080fd5b5061024f6104ad366004612040565b6109b9565b3480156104be57600080fd5b5061033761520881565b606554604051632376548f60e21b81526000916001600160a01b031690638dd9523c906105029087908790879062030d40906004016121fe565b602060405180830381865afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190612236565b90505b9392505050565b61055e843385858562030d40610a2f565b50505050565b610572853386868686610a2f565b5050505050565b610581610c6f565b61058b6000610cc9565b565b6069546001600160401b03166105dd82356105ac61010085018561224f565b6001600160401b038086166000908152606a60209081526040808320606b9092529091205490911660026003610d1b565b6106265760405162461bcd60e51b81526020600482015260156024820152744f6d6e69506f7274616c3a206e6f2071756f72756d60581b60448201526064015b60405180910390fd5b61065b82356040840161063c60a086018661224f565b61064960c088018861224f565b61065660e08a018a61224f565b610ef7565b6106a75760405162461bcd60e51b815260206004820152601960248201527f4f6d6e69506f7274616c3a20696e76616c69642070726f6f6600000000000000604482015260640161061d565b6106b76080830160608401612025565b606860006106cb6060860160408701612025565b6001600160401b03166001600160401b0316815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b0316021790555060005b61071f60a084018461224f565b90508110156107675761075f61073860a085018561224f565b8381811061074857610748612298565b905060200281019061075a91906122ae565b610f81565b600101610712565b505050565b606554604051632376548f60e21b81526000916001600160a01b031690638dd9523c906107a39088908890889088906004016121fe565b602060405180830381865afa1580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190612236565b95945050505050565b6107f5610c6f565b60405147906001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561082d573d6000803e3d6000fd5b50816001600160a01b03167f9dc46f23cfb5ddcad0ae7ea2be38d47fec07bb9382ec7e564efc69e036dd66ce8260405161086991815260200190565b60405180910390a25050565b61087d610c6f565b61088681611307565b50565b600054610100900460ff16158080156108a95750600054600160ff909116105b806108c35750303b1580156108c3575060005460ff166001145b6109265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161061d565b6000805460ff191660011790558015610949576000805461ff0019166101001790555b6109516113af565b61095a85610cc9565b61096384611307565b61096d83836113de565b8015610572576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6109c1610c6f565b6001600160a01b038116610a265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161061d565b61088681610cc9565b610a3b8684848461076c565b341015610a8a5760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e69506f7274616c3a20696e73756666696369656e742066656500000000604482015260640161061d565b624c4b406001600160401b0382161115610ae65760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e69506f7274616c3a206761734c696d697420746f6f2068696768000000604482015260640161061d565b6152086001600160401b0382161015610b415760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e69506f7274616c3a206761734c696d697420746f6f206c6f7700000000604482015260640161061d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316866001600160401b031603610bc25760405162461bcd60e51b815260206004820152601f60248201527f4f6d6e69506f7274616c3a206e6f2073616d652d636861696e207863616c6c00604482015260640161061d565b6001600160401b0380871660009081526066602052604081208054600193919291610bef918591166122e4565b82546101009290920a6001600160401b038181021990931691831602179091558781166000818152606660205260409081902054905192169250907fac3afbbff5be7c4af1610721cf4793840bd167251fd6f184ee708f752a73128390610c5f908990899089908990899061230b565b60405180910390a3505050505050565b6033546001600160a01b0316331461058b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161061d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000803660005b88811015610ee457898982818110610d3c57610d3c612298565b9050602002810190610d4e9190612353565b91508015610e705760008a8a610d65600185612369565b818110610d7457610d74612298565b9050602002810190610d869190612353565b610d8f9061237c565b80519091506001600160a01b0316610daa6020850185612040565b6001600160a01b031603610e005760405162461bcd60e51b815260206004820152601f60248201527f4f6d6e69506f7274616c3a206475706c69636174652076616c696461746f7200604482015260640161061d565b80516001600160a01b0316610e186020850185612040565b6001600160a01b031611610e6e5760405162461bcd60e51b815260206004820152601b60248201527f4f6d6e69506f7274616c3a2073696773206e6f7420736f727465640000000000604482015260640161061d565b505b610e7a828c61166e565b15610ebf57876000610e8f6020850185612040565b6001600160a01b03168152602081019190915260400160002054610ebc906001600160401b0316846122e4565b92505b610ecb838888886116e4565b15610edc5760019350505050610eec565b600101610d22565b506000925050505b979650505050505050565b6000610f74858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152508e9250610f6f91508d90508c8c611721565b611834565b9998505050505050505050565b6001600160401b037f000000000000000000000000000000000000000000000000000000000000000016610fbb6040830160208401612025565b6001600160401b0316146110115760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e69506f7274616c3a2077726f6e672064657374436861696e4964000000604482015260640161061d565b606760006110226020840184612025565b6001600160401b03908116825260208201929092526040016000205461104a911660016122e4565b6001600160401b03166110636060830160408401612025565b6001600160401b0316146110b95760405162461bcd60e51b815260206004820152601e60248201527f4f6d6e69506f7274616c3a2077726f6e672073747265616d4f66667365740000604482015260640161061d565b60408051808201909152806110d16020840184612025565b6001600160401b031681526020016110ef6080840160608501612040565b6001600160a01b039081169091528151606c8054602094850151909316600160401b026001600160e01b03199093166001600160401b039092169190911791909117905560019060679060009061114890850185612025565b6001600160401b0390811682526020820192909252604001600090812080549092611175918591166122e4565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506000624c4b406001600160401b03168260c00160208101906111bb9190612025565b6001600160401b0316116111de576111d960e0830160c08401612025565b6111e3565b624c4b405b6001600160401b0316905060005a9050600061120560a0850160808601612040565b6001600160a01b03168361121c60a0870187612427565b60405161122a92919061246d565b60006040518083038160008787f1925050503d8060008114611268576040519150601f19603f3d011682016040523d82523d6000602084013e61126d565b606091505b505090505a61127c9083612369565b606c80546001600160e01b0319169055915061129e6060850160408601612025565b6001600160401b03166112b46020860186612025565b604080518581523360208201528415158183015290516001600160401b0392909216917f34515b4105a7bb34f3af3cd490137ab292bb2ff14efb800df5c7d59e28944f259181900360600190a350505050565b6001600160a01b03811661135d5760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e69506f7274616c3a206e6f207a65726f206665654f7261636c65000000604482015260640161061d565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f2819896846ed9ab612eb19218fd845f8328f084c8706b9ec2c47eabd479037a290600090a35050565b600054610100900460ff166113d65760405162461bcd60e51b815260040161061d9061247d565b61058b61184c565b6069546113f5906001600160401b031660016122e4565b6001600160401b0316826001600160401b0316146114555760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e69506f7274616c3a20696e76616c69642076616c536574496400000000604482015260640161061d565b60008151116114a65760405162461bcd60e51b815260206004820152601960248201527f4f6d6e69506f7274616c3a206e6f2076616c696461746f727300000000000000604482015260640161061d565b604080518082018252600080825260208083018290526001600160401b0386168252606a9052918220825b8451811015611604578481815181106114ec576114ec612298565b602090810291909101015180519093506001600160a01b03166115515760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e69506f7274616c3a206e6f207a65726f2076616c696461746f72000000604482015260640161061d565b600083602001516001600160401b0316116115ae5760405162461bcd60e51b815260206004820152601960248201527f4f6d6e69506f7274616c3a206e6f207a65726f20706f77657200000000000000604482015260640161061d565b60208301516115bd90856122e4565b60208481015185516001600160a01b03166000908152918590526040909120805467ffffffffffffffff19166001600160401b0390921691909117905593506001016114d1565b506001600160401b038086166000818152606b6020526040808220805494881667ffffffffffffffff19958616179055606980549094168317909355915190917f3a7c2f997a87ba92aedaecd1127f4129cae1283e2809ebf5304d321b943fd10791a25050505050565b600061167d6020840184612040565b6001600160a01b03166116d1836116976020870187612427565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061187c92505050565b6001600160a01b03161490505b92915050565b60008160ff168360ff16856116f991906124c8565b61170391906124f3565b6001600160401b0316856001600160401b0316119050949350505050565b60606000611730836001612527565b6001600160401b038111156117475761174761205b565b604051908082528060200260200182016040528015611770578160200160208202803683370190505b50905061179b85604051602001611787919061253a565b6040516020818303038152906040526118a0565b816000815181106117ae576117ae612298565b60200260200101818152505060005b8381101561182b576117fc8585838181106117da576117da612298565b90506020028101906117ec91906122ae565b6040516020016117879190612577565b82611808836001612527565b8151811061181857611818612298565b60209081029190910101526001016117bd565b50949350505050565b6000826118428686856118d9565b1495945050505050565b600054610100900460ff166118735760405162461bcd60e51b815260040161061d9061247d565b61058b33610cc9565b600080600061188b8585611b6c565b9150915061189881611bb1565b509392505050565b600081805190602001206040516020016118bc91815260200190565b604051602081830303815290604052805190602001209050919050565b80518351835160009291908060016118f18486612527565b6118fb9190612369565b146119485760405162461bcd60e51b815260206004820152601f60248201527f4d65726b6c6550726f6f663a20696e76616c6964206d756c746970726f6f6600604482015260640161061d565b6000816001600160401b038111156119625761196261205b565b60405190808252806020026020018201604052801561198b578160200160208202803683370190505b5090506000806000805b85811015611abf5760008885106119d05785846119b181612663565b9550815181106119c3576119c3612298565b60200260200101516119f6565b8a856119db81612663565b9650815181106119ed576119ed612298565b60200260200101515b905060008c8381518110611a0c57611a0c612298565b6020026020010151611a42578d84611a2381612663565b955081518110611a3557611a35612298565b6020026020010151611a8c565b898610611a66578685611a5481612663565b965081518110611a3557611a35612298565b8b86611a7181612663565b975081518110611a8357611a83612298565b60200260200101515b9050611a988282611cfb565b878481518110611aaa57611aaa612298565b60209081029190910101525050600101611995565b508415611b4057858114611b155760405162461bcd60e51b815260206004820152601f60248201527f4d65726b6c6550726f6f663a20696e76616c6964206d756c746970726f6f6600604482015260640161061d565b836001860381518110611b2a57611b2a612298565b6020026020010151975050505050505050610546565b8615611b595788600081518110611b2a57611b2a612298565b8a600081518110611b2a57611b2a612298565b6000808251604103611ba25760208301516040840151606085015160001a611b9687828585611d27565b94509450505050611baa565b506000905060025b9250929050565b6000816004811115611bc557611bc561267c565b03611bcd5750565b6001816004811115611be157611be161267c565b03611c2e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161061d565b6002816004811115611c4257611c4261267c565b03611c8f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161061d565b6003816004811115611ca357611ca361267c565b036108865760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161061d565b6000818310611d17576000828152602084905260409020610546565b5060009182526020526040902090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611d5e5750600090506003611de2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611db2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611ddb57600060019250925050611de2565b9150600090505b94509492505050565b80356001600160401b0381168114611e0257600080fd5b919050565b60008083601f840112611e1957600080fd5b5081356001600160401b03811115611e3057600080fd5b602083019150836020828501011115611baa57600080fd5b600080600060408486031215611e5d57600080fd5b611e6684611deb565b925060208401356001600160401b03811115611e8157600080fd5b611e8d86828701611e07565b9497909650939450505050565b80356001600160a01b0381168114611e0257600080fd5b60008060008060608587031215611ec757600080fd5b611ed085611deb565b9350611ede60208601611e9a565b925060408501356001600160401b03811115611ef957600080fd5b611f0587828801611e07565b95989497509550505050565b600080600080600060808688031215611f2957600080fd5b611f3286611deb565b9450611f4060208701611e9a565b935060408601356001600160401b03811115611f5b57600080fd5b611f6788828901611e07565b9094509250611f7a905060608701611deb565b90509295509295909350565b600060208284031215611f9857600080fd5b81356001600160401b03811115611fae57600080fd5b8201610120818503121561054657600080fd5b60008060008060608587031215611fd757600080fd5b611fe085611deb565b935060208501356001600160401b03811115611ffb57600080fd5b61200787828801611e07565b909450925061201a905060408601611deb565b905092959194509250565b60006020828403121561203757600080fd5b61054682611deb565b60006020828403121561205257600080fd5b61054682611e9a565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156120935761209361205b565b60405290565b604051601f8201601f191681016001600160401b03811182821017156120c1576120c161205b565b604052919050565b600080600080608085870312156120df57600080fd5b6120e885611e9a565b935060206120f7818701611e9a565b9350604061210760408801611deb565b935060608701356001600160401b038082111561212357600080fd5b818901915089601f83011261213757600080fd5b8135818111156121495761214961205b565b612157858260051b01612099565b818152858101925060069190911b83018501908b82111561217757600080fd5b928501925b818410156121c55784848d0312156121945760008081fd5b61219c612071565b6121a585611e9a565b81526121b2878601611deb565b818801528352928401929185019161217c565b989b979a50959850505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160401b038087168352606060208401526122226060840186886121d5565b915080841660408401525095945050505050565b60006020828403121561224857600080fd5b5051919050565b6000808335601e1984360301811261226657600080fd5b8301803591506001600160401b0382111561228057600080fd5b6020019150600581901b3603821315611baa57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560de198336030181126122c457600080fd5b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019080821115612304576123046122ce565b5092915050565b6001600160a01b0386811682528516602082015260806040820181905260009061233890830185876121d5565b90506001600160401b03831660608301529695505050505050565b60008235603e198336030181126122c457600080fd5b818103818111156116de576116de6122ce565b60006040823603121561238e57600080fd5b612396612071565b61239f83611e9a565b81526020808401356001600160401b03808211156123bc57600080fd5b9085019036601f8301126123cf57600080fd5b8135818111156123e1576123e161205b565b6123f3601f8201601f19168501612099565b9150808252368482850101111561240957600080fd5b80848401858401376000908201840152918301919091525092915050565b6000808335601e1984360301811261243e57600080fd5b8301803591506001600160401b0382111561245857600080fd5b602001915036819003821315611baa57600080fd5b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038181168382160280821691908281146124eb576124eb6122ce565b505092915050565b60006001600160401b038084168061251b57634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b808201808211156116de576116de6122ce565b606081016001600160401b038061255085611deb565b1683528061256060208601611deb565b166020840152506040830135604083015292915050565b6020815260006001600160401b038061258f85611deb565b166020840152806125a260208601611deb565b166040840152806125b560408601611deb565b1660608401526125c760608501611e9a565b60018060a01b038082166080860152806125e360808801611e9a565b1660a0860152505060a0840135601e1985360301811261260257600080fd5b84016020810190358281111561261757600080fd5b80360382131561262657600080fd5b60e060c086015261263c610100860182846121d5565b9250505061264c60c08501611deb565b6001600160401b03811660e0850152509392505050565b600060018201612675576126756122ce565b5060010190565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220b8a4916a8df2e2ed65b9fce951e090af44c20628013aba6a7ca00a64193a820e64736f6c63430008170033", + Bin: "0x60a06040523480156200001157600080fd5b506200001c6200002f565b6001600160401b034616608052620000f0565b600054610100900460ff16156200009c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000ee576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516126c86200011a6000396000818161036101528181610b430152610f8b01526126c86000f3fe6080604052600436106101405760003560e01c806390ab417c116100b6578063a6cfb9781161006f578063a6cfb97814610407578063a8a989621461041c578063b58e964f1461043c578063d14e731314610472578063f2fde38b14610492578063fa590d14146104b257600080fd5b806390ab417c146103015780639a8a05921461034f5780639c346d99146103835780639dad9aae146103b9578063a2cc111b146103d0578063a480ca79146103e757600080fd5b806355e2448e1161010857806355e2448e1461025157806370e8b56a1461027b578063715018a61461028e578063738ec47c146102a35780638da5cb5b146102c35780638dd9523c146102e157600080fd5b80632f32700e146101455780634115ab79146101af5780634f93e91f146101dd578063500b19e71461020457806350e646dd1461023c575b600080fd5b34801561015157600080fd5b50604080518082018252600080825260209182015281518083018352606c546001600160401b0381168083526001600160a01b03600160401b9092048216928401928352845190815291511691810191909152015b60405180910390f35b3480156101bb57600080fd5b506101cf6101ca366004611e48565b6104c8565b6040519081526020016101a6565b3480156101e957600080fd5b506101f2600381565b60405160ff90911681526020016101a6565b34801561021057600080fd5b50606554610224906001600160a01b031681565b6040516001600160a01b0390911681526020016101a6565b61024f61024a366004611eb1565b61054d565b005b34801561025d57600080fd5b50606c546040516001600160401b03909116151581526020016101a6565b61024f610289366004611f11565b610564565b34801561029a57600080fd5b5061024f610579565b3480156102af57600080fd5b5061024f6102be366004611f86565b61058d565b3480156102cf57600080fd5b506033546001600160a01b0316610224565b3480156102ed57600080fd5b506101cf6102fc366004611fc1565b61076c565b34801561030d57600080fd5b5061033761031c366004612025565b6066602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020016101a6565b34801561035b57600080fd5b506103377f000000000000000000000000000000000000000000000000000000000000000081565b34801561038f57600080fd5b5061033761039e366004612025565b6068602052600090815260409020546001600160401b031681565b3480156103c557600080fd5b5061033762030d4081565b3480156103dc57600080fd5b50610337624c4b4081565b3480156103f357600080fd5b5061024f610402366004612040565b6107ed565b34801561041357600080fd5b506101f2600281565b34801561042857600080fd5b5061024f610437366004612040565b610875565b34801561044857600080fd5b50610337610457366004612025565b6067602052600090815260409020546001600160401b031681565b34801561047e57600080fd5b5061024f61048d3660046120c9565b610889565b34801561049e57600080fd5b5061024f6104ad366004612040565b6109b9565b3480156104be57600080fd5b5061033761520881565b606554604051632376548f60e21b81526000916001600160a01b031690638dd9523c906105029087908790879062030d40906004016121fe565b602060405180830381865afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190612236565b90505b9392505050565b61055e843385858562030d40610a2f565b50505050565b610572853386868686610a2f565b5050505050565b610581610c6f565b61058b6000610cc9565b565b6069546001600160401b03166105dd82356105ac61010085018561224f565b6001600160401b038086166000908152606a60209081526040808320606b9092529091205490911660026003610d1b565b6106265760405162461bcd60e51b81526020600482015260156024820152744f6d6e69506f7274616c3a206e6f2071756f72756d60581b60448201526064015b60405180910390fd5b61065b82356040840161063c60a086018661224f565b61064960c088018861224f565b61065660e08a018a61224f565b610ef7565b6106a75760405162461bcd60e51b815260206004820152601960248201527f4f6d6e69506f7274616c3a20696e76616c69642070726f6f6600000000000000604482015260640161061d565b6106b76080830160608401612025565b606860006106cb6060860160408701612025565b6001600160401b03166001600160401b0316815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b0316021790555060005b61071f60a084018461224f565b90508110156107675761075f61073860a085018561224f565b8381811061074857610748612298565b905060200281019061075a91906122ae565b610f81565b600101610712565b505050565b606554604051632376548f60e21b81526000916001600160a01b031690638dd9523c906107a39088908890889088906004016121fe565b602060405180830381865afa1580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190612236565b95945050505050565b6107f5610c6f565b60405147906001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561082d573d6000803e3d6000fd5b50816001600160a01b03167f9dc46f23cfb5ddcad0ae7ea2be38d47fec07bb9382ec7e564efc69e036dd66ce8260405161086991815260200190565b60405180910390a25050565b61087d610c6f565b61088681611307565b50565b600054610100900460ff16158080156108a95750600054600160ff909116105b806108c35750303b1580156108c3575060005460ff166001145b6109265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161061d565b6000805460ff191660011790558015610949576000805461ff0019166101001790555b6109516113af565b61095a85610cc9565b61096384611307565b61096d83836113de565b8015610572576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6109c1610c6f565b6001600160a01b038116610a265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161061d565b61088681610cc9565b610a3b8684848461076c565b341015610a8a5760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e69506f7274616c3a20696e73756666696369656e742066656500000000604482015260640161061d565b624c4b406001600160401b0382161115610ae65760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e69506f7274616c3a206761734c696d697420746f6f2068696768000000604482015260640161061d565b6152086001600160401b0382161015610b415760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e69506f7274616c3a206761734c696d697420746f6f206c6f7700000000604482015260640161061d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316866001600160401b031603610bc25760405162461bcd60e51b815260206004820152601f60248201527f4f6d6e69506f7274616c3a206e6f2073616d652d636861696e207863616c6c00604482015260640161061d565b6001600160401b0380871660009081526066602052604081208054600193919291610bef918591166122e4565b82546101009290920a6001600160401b038181021990931691831602179091558781166000818152606660205260409081902054905192169250907fac3afbbff5be7c4af1610721cf4793840bd167251fd6f184ee708f752a73128390610c5f908990899089908990899061230b565b60405180910390a3505050505050565b6033546001600160a01b0316331461058b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161061d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000803660005b88811015610ee457898982818110610d3c57610d3c612298565b9050602002810190610d4e9190612353565b91508015610e705760008a8a610d65600185612369565b818110610d7457610d74612298565b9050602002810190610d869190612353565b610d8f9061237c565b80519091506001600160a01b0316610daa6020850185612040565b6001600160a01b031603610e005760405162461bcd60e51b815260206004820152601f60248201527f4f6d6e69506f7274616c3a206475706c69636174652076616c696461746f7200604482015260640161061d565b80516001600160a01b0316610e186020850185612040565b6001600160a01b031611610e6e5760405162461bcd60e51b815260206004820152601b60248201527f4f6d6e69506f7274616c3a2073696773206e6f7420736f727465640000000000604482015260640161061d565b505b610e7a828c61166e565b15610ebf57876000610e8f6020850185612040565b6001600160a01b03168152602081019190915260400160002054610ebc906001600160401b0316846122e4565b92505b610ecb838888886116e4565b15610edc5760019350505050610eec565b600101610d22565b506000925050505b979650505050505050565b6000610f74858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152508e9250610f6f91508d90508c8c611721565b611834565b9998505050505050505050565b6001600160401b037f000000000000000000000000000000000000000000000000000000000000000016610fbb6040830160208401612025565b6001600160401b0316146110115760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e69506f7274616c3a2077726f6e672064657374436861696e4964000000604482015260640161061d565b606760006110226020840184612025565b6001600160401b03908116825260208201929092526040016000205461104a911660016122e4565b6001600160401b03166110636060830160408401612025565b6001600160401b0316146110b95760405162461bcd60e51b815260206004820152601e60248201527f4f6d6e69506f7274616c3a2077726f6e672073747265616d4f66667365740000604482015260640161061d565b60408051808201909152806110d16020840184612025565b6001600160401b031681526020016110ef6080840160608501612040565b6001600160a01b039081169091528151606c8054602094850151909316600160401b026001600160e01b03199093166001600160401b039092169190911791909117905560019060679060009061114890850185612025565b6001600160401b0390811682526020820192909252604001600090812080549092611175918591166122e4565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506000624c4b406001600160401b03168260c00160208101906111bb9190612025565b6001600160401b0316116111de576111d960e0830160c08401612025565b6111e3565b624c4b405b6001600160401b0316905060005a9050600061120560a0850160808601612040565b6001600160a01b03168361121c60a0870187612427565b60405161122a92919061246d565b60006040518083038160008787f1925050503d8060008114611268576040519150601f19603f3d011682016040523d82523d6000602084013e61126d565b606091505b505090505a61127c9083612369565b606c80546001600160e01b0319169055915061129e6060850160408601612025565b6001600160401b03166112b46020860186612025565b604080518581523360208201528415158183015290516001600160401b0392909216917f34515b4105a7bb34f3af3cd490137ab292bb2ff14efb800df5c7d59e28944f259181900360600190a350505050565b6001600160a01b03811661135d5760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e69506f7274616c3a206e6f207a65726f206665654f7261636c65000000604482015260640161061d565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f2819896846ed9ab612eb19218fd845f8328f084c8706b9ec2c47eabd479037a290600090a35050565b600054610100900460ff166113d65760405162461bcd60e51b815260040161061d9061247d565b61058b61184c565b6069546113f5906001600160401b031660016122e4565b6001600160401b0316826001600160401b0316146114555760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e69506f7274616c3a20696e76616c69642076616c536574496400000000604482015260640161061d565b60008151116114a65760405162461bcd60e51b815260206004820152601960248201527f4f6d6e69506f7274616c3a206e6f2076616c696461746f727300000000000000604482015260640161061d565b604080518082018252600080825260208083018290526001600160401b0386168252606a9052918220825b8451811015611604578481815181106114ec576114ec612298565b602090810291909101015180519093506001600160a01b03166115515760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e69506f7274616c3a206e6f207a65726f2076616c696461746f72000000604482015260640161061d565b600083602001516001600160401b0316116115ae5760405162461bcd60e51b815260206004820152601960248201527f4f6d6e69506f7274616c3a206e6f207a65726f20706f77657200000000000000604482015260640161061d565b60208301516115bd90856122e4565b60208481015185516001600160a01b03166000908152918590526040909120805467ffffffffffffffff19166001600160401b0390921691909117905593506001016114d1565b506001600160401b038086166000818152606b6020526040808220805494881667ffffffffffffffff19958616179055606980549094168317909355915190917f3a7c2f997a87ba92aedaecd1127f4129cae1283e2809ebf5304d321b943fd10791a25050505050565b600061167d6020840184612040565b6001600160a01b03166116d1836116976020870187612427565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061187c92505050565b6001600160a01b03161490505b92915050565b60008160ff168360ff16856116f991906124c8565b61170391906124f3565b6001600160401b0316856001600160401b0316119050949350505050565b60606000611730836001612527565b6001600160401b038111156117475761174761205b565b604051908082528060200260200182016040528015611770578160200160208202803683370190505b50905061179b85604051602001611787919061253a565b6040516020818303038152906040526118a0565b816000815181106117ae576117ae612298565b60200260200101818152505060005b8381101561182b576117fc8585838181106117da576117da612298565b90506020028101906117ec91906122ae565b6040516020016117879190612577565b82611808836001612527565b8151811061181857611818612298565b60209081029190910101526001016117bd565b50949350505050565b6000826118428686856118d9565b1495945050505050565b600054610100900460ff166118735760405162461bcd60e51b815260040161061d9061247d565b61058b33610cc9565b600080600061188b8585611b6c565b9150915061189881611bb1565b509392505050565b600081805190602001206040516020016118bc91815260200190565b604051602081830303815290604052805190602001209050919050565b80518351835160009291908060016118f18486612527565b6118fb9190612369565b146119485760405162461bcd60e51b815260206004820152601f60248201527f4d65726b6c6550726f6f663a20696e76616c6964206d756c746970726f6f6600604482015260640161061d565b6000816001600160401b038111156119625761196261205b565b60405190808252806020026020018201604052801561198b578160200160208202803683370190505b5090506000806000805b85811015611abf5760008885106119d05785846119b181612663565b9550815181106119c3576119c3612298565b60200260200101516119f6565b8a856119db81612663565b9650815181106119ed576119ed612298565b60200260200101515b905060008c8381518110611a0c57611a0c612298565b6020026020010151611a42578d84611a2381612663565b955081518110611a3557611a35612298565b6020026020010151611a8c565b898610611a66578685611a5481612663565b965081518110611a3557611a35612298565b8b86611a7181612663565b975081518110611a8357611a83612298565b60200260200101515b9050611a988282611cfb565b878481518110611aaa57611aaa612298565b60209081029190910101525050600101611995565b508415611b4057858114611b155760405162461bcd60e51b815260206004820152601f60248201527f4d65726b6c6550726f6f663a20696e76616c6964206d756c746970726f6f6600604482015260640161061d565b836001860381518110611b2a57611b2a612298565b6020026020010151975050505050505050610546565b8615611b595788600081518110611b2a57611b2a612298565b8a600081518110611b2a57611b2a612298565b6000808251604103611ba25760208301516040840151606085015160001a611b9687828585611d27565b94509450505050611baa565b506000905060025b9250929050565b6000816004811115611bc557611bc561267c565b03611bcd5750565b6001816004811115611be157611be161267c565b03611c2e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161061d565b6002816004811115611c4257611c4261267c565b03611c8f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161061d565b6003816004811115611ca357611ca361267c565b036108865760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161061d565b6000818310611d17576000828152602084905260409020610546565b5060009182526020526040902090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611d5e5750600090506003611de2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611db2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611ddb57600060019250925050611de2565b9150600090505b94509492505050565b80356001600160401b0381168114611e0257600080fd5b919050565b60008083601f840112611e1957600080fd5b5081356001600160401b03811115611e3057600080fd5b602083019150836020828501011115611baa57600080fd5b600080600060408486031215611e5d57600080fd5b611e6684611deb565b925060208401356001600160401b03811115611e8157600080fd5b611e8d86828701611e07565b9497909650939450505050565b80356001600160a01b0381168114611e0257600080fd5b60008060008060608587031215611ec757600080fd5b611ed085611deb565b9350611ede60208601611e9a565b925060408501356001600160401b03811115611ef957600080fd5b611f0587828801611e07565b95989497509550505050565b600080600080600060808688031215611f2957600080fd5b611f3286611deb565b9450611f4060208701611e9a565b935060408601356001600160401b03811115611f5b57600080fd5b611f6788828901611e07565b9094509250611f7a905060608701611deb565b90509295509295909350565b600060208284031215611f9857600080fd5b81356001600160401b03811115611fae57600080fd5b8201610120818503121561054657600080fd5b60008060008060608587031215611fd757600080fd5b611fe085611deb565b935060208501356001600160401b03811115611ffb57600080fd5b61200787828801611e07565b909450925061201a905060408601611deb565b905092959194509250565b60006020828403121561203757600080fd5b61054682611deb565b60006020828403121561205257600080fd5b61054682611e9a565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156120935761209361205b565b60405290565b604051601f8201601f191681016001600160401b03811182821017156120c1576120c161205b565b604052919050565b600080600080608085870312156120df57600080fd5b6120e885611e9a565b935060206120f7818701611e9a565b9350604061210760408801611deb565b935060608701356001600160401b038082111561212357600080fd5b818901915089601f83011261213757600080fd5b8135818111156121495761214961205b565b612157858260051b01612099565b818152858101925060069190911b83018501908b82111561217757600080fd5b928501925b818410156121c55784848d0312156121945760008081fd5b61219c612071565b6121a585611e9a565b81526121b2878601611deb565b818801528352928401929185019161217c565b989b979a50959850505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160401b038087168352606060208401526122226060840186886121d5565b915080841660408401525095945050505050565b60006020828403121561224857600080fd5b5051919050565b6000808335601e1984360301811261226657600080fd5b8301803591506001600160401b0382111561228057600080fd5b6020019150600581901b3603821315611baa57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560de198336030181126122c457600080fd5b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019080821115612304576123046122ce565b5092915050565b6001600160a01b0386811682528516602082015260806040820181905260009061233890830185876121d5565b90506001600160401b03831660608301529695505050505050565b60008235603e198336030181126122c457600080fd5b818103818111156116de576116de6122ce565b60006040823603121561238e57600080fd5b612396612071565b61239f83611e9a565b81526020808401356001600160401b03808211156123bc57600080fd5b9085019036601f8301126123cf57600080fd5b8135818111156123e1576123e161205b565b6123f3601f8201601f19168501612099565b9150808252368482850101111561240957600080fd5b80848401858401376000908201840152918301919091525092915050565b6000808335601e1984360301811261243e57600080fd5b8301803591506001600160401b0382111561245857600080fd5b602001915036819003821315611baa57600080fd5b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038181168382160280821691908281146124eb576124eb6122ce565b505092915050565b60006001600160401b038084168061251b57634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b808201808211156116de576116de6122ce565b606081016001600160401b038061255085611deb565b1683528061256060208601611deb565b166020840152506040830135604083015292915050565b6020815260006001600160401b038061258f85611deb565b166020840152806125a260208601611deb565b166040840152806125b560408601611deb565b1660608401526125c760608501611e9a565b60018060a01b038082166080860152806125e360808801611e9a565b1660a0860152505060a0840135601e1985360301811261260257600080fd5b84016020810190358281111561261757600080fd5b80360382131561262657600080fd5b60e060c086015261263c610100860182846121d5565b9250505061264c60c08501611deb565b6001600160401b03811660e0850152509392505050565b600060018201612675576126756122ce565b5060010190565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220b5a2ac2f67fae1e71db93f1e16a1600e0247a71792ecbab93d78e7be5464b9b164736f6c63430008170033", } // OmniPortalABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/proxyadmin.go b/contracts/bindings/proxyadmin.go index aab9525ac..304253ed3 100644 --- a/contracts/bindings/proxyadmin.go +++ b/contracts/bindings/proxyadmin.go @@ -32,7 +32,7 @@ var ( // ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. var ProxyAdminMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"changeProxyAdmin\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getProxyAdmin\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getProxyImplementation\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgrade\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeAndCall\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220a0217588cf9eb2476559335cc8899292aa7ae3f620500c5003a5207f27435d2264736f6c634300080c0033", + Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220c05fd01e9cb5a6d57ff48f40dd8e3c410a74fcc7c0c567cb80c11c5959dda6a164736f6c634300080c0033", } // ProxyAdminABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/strategybase.go b/contracts/bindings/strategybase.go index 0ac799edf..db5cf66d3 100644 --- a/contracts/bindings/strategybase.go +++ b/contracts/bindings/strategybase.go @@ -32,7 +32,7 @@ var ( // StrategyBaseMetaData contains all meta data concerning the StrategyBase contract. var StrategyBaseMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"newShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"explanation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"shares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlying\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlyingView\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"underlyingToShares\",\"inputs\":[{\"name\":\"amountUnderlying\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"underlyingToSharesView\",\"inputs\":[{\"name\":\"amountUnderlying\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"underlyingToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"userUnderlying\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"userUnderlyingView\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x60a060405234801561001057600080fd5b506040516200185f3803806200185f8339810160408190526100319161010b565b6001600160a01b03811660805261004661004c565b5061013b565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614610109576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011d57600080fd5b81516001600160a01b038116811461013457600080fd5b9392505050565b6080516116f36200016c6000396000818161019901528181610570015281816109550152610a2001526116f36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a36600461137b565b610310565b005b61014f61015f36600461139f565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046113b8565b610510565b61014f6101f33660046113e4565b6106b4565b6101c461020636600461137b565b6107c9565b61014f6107dd565b61023261022136600461141d565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c461025836600461139f565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c461028436600461139f565b6108f4565b6101c461029736600461137b565b6108ff565b6102a461090d565b60405161018b9190611470565b6101c46102bf36600461137b565b61092d565b61014f6102d23660046114a3565b6109c2565b6101c46102e536600461139f565b610b8b565b6101c46102f836600461139f565b610bc4565b61014f61030b36600461139f565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038791906114e4565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b790611501565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d919061154b565b6104595760405162461bcd60e51b81526004016103b79061156d565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e8836115cb565b905060006103e8610607610eb0565b61061191906115cb565b9050600061061f87836115e3565b90508061062c84896115fa565b6106369190611619565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856115cb565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e919061154b565b61086a5760405162461bcd60e51b81526004016103b79061156d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc91906115cb565b905060006103e86108cb610eb0565b6108d591906115cb565b9050816108e285836115fa565b6108ec9190611619565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d8152602001611671604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d7919061163b565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e8836115cb565b905060006103e8610b44610eb0565b610b4e91906115cb565b9050600082610b5d87846115fa565b610b679190611619565b9050610b7386856115e3565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e91906115cb565b905060006103e8610bad610eb0565b610bb791906115cb565b9050806108e283866115fa565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4691906114e4565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b790611501565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d919061163b565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611246565b90508051600014806111e75750808060200190518101906111e7919061154b565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b60606108ec848460008585600080866001600160a01b0316858760405161126d9190611654565b60006040518083038185875af1925050503d80600081146112aa576040519150601f19603f3d011682016040523d82523d6000602084013e6112af565b606091505b50915091506112c0878383876112cb565b979650505050505050565b60608315611337578251611330576001600160a01b0385163b6113305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b50816108ec565b6108ec838381511561134c5781518083602001fd5b8060405162461bcd60e51b81526004016103b79190611470565b6001600160a01b03811681146103c957600080fd5b60006020828403121561138d57600080fd5b813561139881611366565b9392505050565b6000602082840312156113b157600080fd5b5035919050565b600080604083850312156113cb57600080fd5b82356113d681611366565b946020939093013593505050565b600080604083850312156113f757600080fd5b823561140281611366565b9150602083013561141281611366565b809150509250929050565b60006020828403121561142f57600080fd5b813560ff8116811461139857600080fd5b60005b8381101561145b578181015183820152602001611443565b8381111561146a576000848401525b50505050565b602081526000825180602084015261148f816040850160208701611440565b601f01601f19169190910160400192915050565b6000806000606084860312156114b857600080fd5b83356114c381611366565b925060208401356114d381611366565b929592945050506040919091013590565b6000602082840312156114f657600080fd5b815161139881611366565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561155d57600080fd5b8151801515811461139857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156115de576115de6115b5565b500190565b6000828210156115f5576115f56115b5565b500390565b6000816000190483118215151615611614576116146115b5565b500290565b60008261163657634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561164d57600080fd5b5051919050565b60008251611666818460208701611440565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a264697066735822122082e223e4a2d7582da3636882e0069f62e1d7c39e61ce959a6b6eb9b3d477cc6464736f6c634300080c0033", + Bin: "0x60a060405234801561001057600080fd5b506040516200185f3803806200185f8339810160408190526100319161010b565b6001600160a01b03811660805261004661004c565b5061013b565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614610109576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011d57600080fd5b81516001600160a01b038116811461013457600080fd5b9392505050565b6080516116f36200016c6000396000818161019901528181610570015281816109550152610a2001526116f36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a36600461137b565b610310565b005b61014f61015f36600461139f565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046113b8565b610510565b61014f6101f33660046113e4565b6106b4565b6101c461020636600461137b565b6107c9565b61014f6107dd565b61023261022136600461141d565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c461025836600461139f565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c461028436600461139f565b6108f4565b6101c461029736600461137b565b6108ff565b6102a461090d565b60405161018b9190611470565b6101c46102bf36600461137b565b61092d565b61014f6102d23660046114a3565b6109c2565b6101c46102e536600461139f565b610b8b565b6101c46102f836600461139f565b610bc4565b61014f61030b36600461139f565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038791906114e4565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b790611501565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d919061154b565b6104595760405162461bcd60e51b81526004016103b79061156d565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e8836115cb565b905060006103e8610607610eb0565b61061191906115cb565b9050600061061f87836115e3565b90508061062c84896115fa565b6106369190611619565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856115cb565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e919061154b565b61086a5760405162461bcd60e51b81526004016103b79061156d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc91906115cb565b905060006103e86108cb610eb0565b6108d591906115cb565b9050816108e285836115fa565b6108ec9190611619565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d8152602001611671604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d7919061163b565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e8836115cb565b905060006103e8610b44610eb0565b610b4e91906115cb565b9050600082610b5d87846115fa565b610b679190611619565b9050610b7386856115e3565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e91906115cb565b905060006103e8610bad610eb0565b610bb791906115cb565b9050806108e283866115fa565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4691906114e4565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b790611501565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d919061163b565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611246565b90508051600014806111e75750808060200190518101906111e7919061154b565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b60606108ec848460008585600080866001600160a01b0316858760405161126d9190611654565b60006040518083038185875af1925050503d80600081146112aa576040519150601f19603f3d011682016040523d82523d6000602084013e6112af565b606091505b50915091506112c0878383876112cb565b979650505050505050565b60608315611337578251611330576001600160a01b0385163b6113305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b50816108ec565b6108ec838381511561134c5781518083602001fd5b8060405162461bcd60e51b81526004016103b79190611470565b6001600160a01b03811681146103c957600080fd5b60006020828403121561138d57600080fd5b813561139881611366565b9392505050565b6000602082840312156113b157600080fd5b5035919050565b600080604083850312156113cb57600080fd5b82356113d681611366565b946020939093013593505050565b600080604083850312156113f757600080fd5b823561140281611366565b9150602083013561141281611366565b809150509250929050565b60006020828403121561142f57600080fd5b813560ff8116811461139857600080fd5b60005b8381101561145b578181015183820152602001611443565b8381111561146a576000848401525b50505050565b602081526000825180602084015261148f816040850160208701611440565b601f01601f19169190910160400192915050565b6000806000606084860312156114b857600080fd5b83356114c381611366565b925060208401356114d381611366565b929592945050506040919091013590565b6000602082840312156114f657600080fd5b815161139881611366565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561155d57600080fd5b8151801515811461139857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156115de576115de6115b5565b500190565b6000828210156115f5576115f56115b5565b500390565b6000816000190483118215151615611614576116146115b5565b500290565b60008261163657634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561164d57600080fd5b5051919050565b60008251611666818460208701611440565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212207cdcf9338121603e52694ba2996bd478aa76c1d212140028e6f3354193e88e3764736f6c634300080c0033", } // StrategyBaseABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/strategymanager.go b/contracts/bindings/strategymanager.go index 6d683d45e..70d2a13e5 100644 --- a/contracts/bindings/strategymanager.go +++ b/contracts/bindings/strategymanager.go @@ -50,7 +50,7 @@ var ( // StrategyManagerMetaData contains all meta data concerning the StrategyManager contract. var StrategyManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_slasher\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"thirdPartyTransfersForbiddenValues\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"queuedWithdrawal\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositIntoStrategy\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositIntoStrategyWithSignature\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDeposits\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"migrateQueuedWithdrawal\",\"inputs\":[{\"name\":\"queuedWithdrawal\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setThirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyListLength\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"thirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawalRootPending\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyWhitelisterChanged\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedThirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false}]", - Bin: "0x6101006040523480156200001257600080fd5b50604051620036f1380380620036f183398101604081905262000035916200013f565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000193565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000124576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013c57600080fd5b50565b6000806000606084860312156200015557600080fd5b8351620001628162000126565b6020850151909350620001758162000126565b6040850151909250620001888162000126565b809150509250925092565b60805160a05160c05160e051613501620001f060003960006115890152600061048f015260006102a601526000818161059b01528181610bbb01528181610f5501528181610fa9015281816110ad0152611b9901526135016000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612a1e565b6105fe565b005b61023f61024f366004612a3b565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612ad4565b6107f9565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612bc1565b610a9d565b61023f610ad5565b610345610330366004612bfa565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612a1e565b60d16020526000908152604090205460ff1681565b61023f610b9c565b61027b610396366004612c1d565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612a1e565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612a1e565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612c4b565b610bb0565b6033546001600160a01b03166102c8565b610446610441366004612a1e565b610c09565b604051610285929190612d00565b60cb546102c8906001600160a01b031681565b610345610475366004612a1e565b60d36020526000908152604090205460ff1681565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104bf366004612e9e565b610d89565b61023f6104d2366004612fb9565b610dd6565b6103456104e5366004612a3b565b60cf6020526000908152604090205460ff1681565b61023f610508366004612ffb565b610f4a565b61023f61051b36600461304c565b610f9e565b61023f61052e366004612a1e565b611056565b6102c861054136600461309f565b611067565b610559610554366004612e9e565b61109f565b604080519215158352602083019190915201610285565b61023f61057e366004612ffb565b611133565b61023f6105913660046130cb565b611267565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6105cb366004612c4b565b611490565b61023f6105de366004612a1e565b61150f565b61027b611585565b61023f6105f9366004612a3b565b6115c3565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190613137565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a590613154565b60405180910390fd5b6106b78161171f565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610726919061319e565b6107425760405162461bcd60e51b81526004016106a5906131bb565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b610858611816565b6001600160a01b038816600090815260d3602052604090205460ff16156108fa5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b4284101561097c5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a34611585565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a77888288611870565b610a83888c8c8c611a2f565b9450505050610a926001606555565b509695505050505050565b60cb546001600160a01b03163314610ac75760405162461bcd60e51b81526004016106a590613203565b610ad18282611bfe565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b41919061319e565b610b5d5760405162461bcd60e51b81526004016106a5906131bb565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610ba4611c6c565b610bae6000611cc6565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bf85760405162461bcd60e51b81526004016106a59061326d565b610c03838383611d18565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c4157610c41612a64565b604051908082528060200260200182016040528015610c6a578160200160208202803683370190505b50905060005b82811015610cfb576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610caf57610caf6132cb565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610ce857610ce86132cb565b6020908102919091010152600101610c70565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d7757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d59575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610db99790969591016132e1565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e005760405162461bcd60e51b81526004016106a590613203565b8060005b81811015610c035760d16000858584818110610e2257610e226132cb565b9050602002016020810190610e379190612a1e565b6001600160a01b0316815260208101919091526040016000205460ff1615610f4257600060d16000868685818110610e7157610e716132cb565b9050602002016020810190610e869190612a1e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610ee157610ee16132cb565b9050602002016020810190610ef69190612a1e565b6040516001600160a01b03909116815260200160405180910390a1610f42848483818110610f2657610f266132cb565b9050602002016020810190610f3b9190612a1e565b6000611bfe565b600101610e04565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f925760405162461bcd60e51b81526004016106a59061326d565b610c0384848484611e74565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fe65760405162461bcd60e51b81526004016106a59061326d565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561103857600080fd5b505af115801561104c573d6000803e3d6000fd5b5050505050505050565b61105e611c6c565b6106b781612101565b60ce602052816000526040600020818154811061108357600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110ea5760405162461bcd60e51b81526004016106a59061326d565b60006110f584610d89565b600081815260cf60205260408120549192509060ff161561112a5750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff16158080156111535750600054600160ff909116105b8061116d5750303b15801561116d575060005460ff166001145b6111d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff1916600117905580156111f3576000805461ff0019166101001790555b6111fb61216a565b60c9556112088383612201565b61121185611cc6565b61121a84612101565b8015611260576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112915760405162461bcd60e51b81526004016106a590613203565b82811461131a5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114885760d1600087878481811061133c5761133c6132cb565b90506020020160208101906113519190612a1e565b6001600160a01b0316815260208101919091526040016000205460ff1661148057600160d1600088888581811061138a5761138a6132cb565b905060200201602081019061139f9190612a1e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106113fa576113fa6132cb565b905060200201602081019061140f9190612a1e565b6040516001600160a01b03909116815260200160405180910390a161148086868381811061143f5761143f6132cb565b90506020020160208101906114549190612a1e565b858584818110611466576114666132cb565b905060200201602081019061147b919061335a565b611bfe565b60010161131e565b505050505050565b6098546000908190600190811614156114e75760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b6114ef611816565b6114fb33868686611a2f565b91506115076001606555565b509392505050565b611517611c6c565b6001600160a01b03811661157c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611cc6565b60007f00000000000000000000000000000000000000000000000000000000000000004614156115b6575060c95490565b6115be61216a565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190613137565b6001600160a01b0316336001600160a01b03161461166a5760405162461bcd60e51b81526004016106a590613154565b6098541981196098541916146116e85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166117ad5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b600260655414156118695760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b6002606555565b6001600160a01b0383163b1561198f57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118b090869086906004016133cf565b602060405180830381865afa1580156118cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f191906133e8565b6001600160e01b0319161461198a5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119a383836122e7565b6001600160a01b03161461198a5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611ad55760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611aea6001600160a01b038516338786612303565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d9190613412565b9150611b6b86858785611e74565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611bdd57600080fd5b505af1158015611bf1573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611d8d5760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e1f5760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611e6757611e5d858561235d565b6001915050611e6d565b60009150505b9392505050565b6001600160a01b038416611ef05760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f5c5760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052205461206d576001600160a01b038416600090815260ce60209081526040909120541061202e5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120a4908490613441565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561222257506001600160a01b03821615155b6122a45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610ad18261171f565b60008060006122f6858561254f565b9150915061150781612595565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c039085906126e3565b6001600160a01b038216600090815260ce6020526040812054905b81811015612478576001600160a01b03848116600090815260ce60205260409020805491851691839081106123af576123af6132cb565b6000918252602090912001546001600160a01b03161415612470576001600160a01b038416600090815260ce6020526040902080546123f090600190613459565b81548110612400576124006132cb565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061243d5761243d6132cb565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612478565b600101612378565b818114156125005760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce6020526040902080548061252757612527613470565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125865760208301516040840151606085015160001a61257a878285856127b8565b9450945050505061258e565b506000905060025b9250929050565b60008160048111156125a9576125a9613486565b14156125b25750565b60018160048111156125c6576125c6613486565b14156126145760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b600281600481111561262857612628613486565b14156126765760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b600381600481111561268a5761268a613486565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6000612738826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661287c9092919063ffffffff16565b9050805160001480612759575080806020019051810190612759919061319e565b61198a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127ef5750600090506003612873565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612843573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661286c57600060019250925050612873565b9150600090505b94509492505050565b606061288b8484600085612893565b949350505050565b6060824710156128f45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b600080866001600160a01b03168587604051612910919061349c565b60006040518083038185875af1925050503d806000811461294d576040519150601f19603f3d011682016040523d82523d6000602084013e612952565b606091505b50915091506129638783838761296e565b979650505050505050565b606083156129da5782516129d3576001600160a01b0385163b6129d35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b508161288b565b61288b83838151156129ef5781518083602001fd5b8060405162461bcd60e51b81526004016106a591906134b8565b6001600160a01b03811681146106b757600080fd5b600060208284031215612a3057600080fd5b8135611e6d81612a09565b600060208284031215612a4d57600080fd5b5035919050565b8035612a5f81612a09565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612a9d57612a9d612a64565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612acc57612acc612a64565b604052919050565b60008060008060008060c08789031215612aed57600080fd5b8635612af881612a09565b9550602087810135612b0981612a09565b9550604088013594506060880135612b2081612a09565b93506080880135925060a088013567ffffffffffffffff80821115612b4457600080fd5b818a0191508a601f830112612b5857600080fd5b813581811115612b6a57612b6a612a64565b612b7c601f8201601f19168501612aa3565b91508082528b84828501011115612b9257600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612bd457600080fd5b8235612bdf81612a09565b91506020830135612bef81612bb3565b809150509250929050565b600060208284031215612c0c57600080fd5b813560ff81168114611e6d57600080fd5b60008060408385031215612c3057600080fd5b8235612c3b81612a09565b91506020830135612bef81612a09565b600080600060608486031215612c6057600080fd5b8335612c6b81612a09565b92506020840135612c7b81612a09565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612cc55781516001600160a01b031687529582019590820190600101612ca0565b509495945050505050565b600081518084526020808501945080840160005b83811015612cc557815187529582019590820190600101612ce4565b604081526000612d136040830185612c8c565b8281036020840152612d258185612cd0565b95945050505050565b600067ffffffffffffffff821115612d4857612d48612a64565b5060051b60200190565b600082601f830112612d6357600080fd5b81356020612d78612d7383612d2e565b612aa3565b82815260059290921b84018101918181019086841115612d9757600080fd5b8286015b84811015610a92578035612dae81612a09565b8352918301918301612d9b565b600082601f830112612dcc57600080fd5b81356020612ddc612d7383612d2e565b82815260059290921b84018101918181019086841115612dfb57600080fd5b8286015b84811015610a925780358352918301918301612dff565b600060408284031215612e2857600080fd5b6040516040810181811067ffffffffffffffff82111715612e4b57612e4b612a64565b6040529050808235612e5c81612a09565b815260208301356bffffffffffffffffffffffff81168114612e7d57600080fd5b6020919091015292915050565b803563ffffffff81168114612a5f57600080fd5b600060208284031215612eb057600080fd5b813567ffffffffffffffff80821115612ec857600080fd5b9083019060e08286031215612edc57600080fd5b612ee4612a7a565b823582811115612ef357600080fd5b612eff87828601612d52565b825250602083013582811115612f1457600080fd5b612f2087828601612dbb565b602083015250612f3260408401612a54565b6040820152612f448660608501612e16565b6060820152612f5560a08401612e8a565b6080820152612f6660c08401612a54565b60a082015295945050505050565b60008083601f840112612f8657600080fd5b50813567ffffffffffffffff811115612f9e57600080fd5b6020830191508360208260051b850101111561258e57600080fd5b60008060208385031215612fcc57600080fd5b823567ffffffffffffffff811115612fe357600080fd5b612fef85828601612f74565b90969095509350505050565b6000806000806080858703121561301157600080fd5b843561301c81612a09565b9350602085013561302c81612a09565b9250604085013561303c81612a09565b9396929550929360600135925050565b6000806000806080858703121561306257600080fd5b843561306d81612a09565b9350602085013561307d81612a09565b925060408501359150606085013561309481612a09565b939692955090935050565b600080604083850312156130b257600080fd5b82356130bd81612a09565b946020939093013593505050565b600080600080604085870312156130e157600080fd5b843567ffffffffffffffff808211156130f957600080fd5b61310588838901612f74565b9096509450602087013591508082111561311e57600080fd5b5061312b87828801612f74565b95989497509550505050565b60006020828403121561314957600080fd5b8151611e6d81612a09565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156131b057600080fd5b8151611e6d81612bb3565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e0815260006132f460e0830189612c8c565b82810360208401526133068189612cd0565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b60006020828403121561336c57600080fd5b8135611e6d81612bb3565b60005b8381101561339257818101518382015260200161337a565b83811115610c035750506000910152565b600081518084526133bb816020860160208601613377565b601f01601f19169290920160200192915050565b82815260406020820152600061288b60408301846133a3565b6000602082840312156133fa57600080fd5b81516001600160e01b031981168114611e6d57600080fd5b60006020828403121561342457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156134545761345461342b565b500190565b60008282101561346b5761346b61342b565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516134ae818460208701613377565b9190910192915050565b602081526000611e6d60208301846133a356fea264697066735822122037e52aa9f59406b36ca0614580bedaa526df7b4ee76a3106c1ce35895276a1a564736f6c634300080c0033", + Bin: "0x6101006040523480156200001257600080fd5b50604051620036f1380380620036f183398101604081905262000035916200013f565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000193565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000124576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013c57600080fd5b50565b6000806000606084860312156200015557600080fd5b8351620001628162000126565b6020850151909350620001758162000126565b6040850151909250620001888162000126565b809150509250925092565b60805160a05160c05160e051613501620001f060003960006115890152600061048f015260006102a601526000818161059b01528181610bbb01528181610f5501528181610fa9015281816110ad0152611b9901526135016000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612a1e565b6105fe565b005b61023f61024f366004612a3b565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612ad4565b6107f9565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612bc1565b610a9d565b61023f610ad5565b610345610330366004612bfa565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612a1e565b60d16020526000908152604090205460ff1681565b61023f610b9c565b61027b610396366004612c1d565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612a1e565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612a1e565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612c4b565b610bb0565b6033546001600160a01b03166102c8565b610446610441366004612a1e565b610c09565b604051610285929190612d00565b60cb546102c8906001600160a01b031681565b610345610475366004612a1e565b60d36020526000908152604090205460ff1681565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104bf366004612e9e565b610d89565b61023f6104d2366004612fb9565b610dd6565b6103456104e5366004612a3b565b60cf6020526000908152604090205460ff1681565b61023f610508366004612ffb565b610f4a565b61023f61051b36600461304c565b610f9e565b61023f61052e366004612a1e565b611056565b6102c861054136600461309f565b611067565b610559610554366004612e9e565b61109f565b604080519215158352602083019190915201610285565b61023f61057e366004612ffb565b611133565b61023f6105913660046130cb565b611267565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6105cb366004612c4b565b611490565b61023f6105de366004612a1e565b61150f565b61027b611585565b61023f6105f9366004612a3b565b6115c3565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190613137565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a590613154565b60405180910390fd5b6106b78161171f565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610726919061319e565b6107425760405162461bcd60e51b81526004016106a5906131bb565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b610858611816565b6001600160a01b038816600090815260d3602052604090205460ff16156108fa5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b4284101561097c5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a34611585565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a77888288611870565b610a83888c8c8c611a2f565b9450505050610a926001606555565b509695505050505050565b60cb546001600160a01b03163314610ac75760405162461bcd60e51b81526004016106a590613203565b610ad18282611bfe565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b41919061319e565b610b5d5760405162461bcd60e51b81526004016106a5906131bb565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610ba4611c6c565b610bae6000611cc6565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bf85760405162461bcd60e51b81526004016106a59061326d565b610c03838383611d18565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c4157610c41612a64565b604051908082528060200260200182016040528015610c6a578160200160208202803683370190505b50905060005b82811015610cfb576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610caf57610caf6132cb565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610ce857610ce86132cb565b6020908102919091010152600101610c70565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d7757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d59575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610db99790969591016132e1565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e005760405162461bcd60e51b81526004016106a590613203565b8060005b81811015610c035760d16000858584818110610e2257610e226132cb565b9050602002016020810190610e379190612a1e565b6001600160a01b0316815260208101919091526040016000205460ff1615610f4257600060d16000868685818110610e7157610e716132cb565b9050602002016020810190610e869190612a1e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610ee157610ee16132cb565b9050602002016020810190610ef69190612a1e565b6040516001600160a01b03909116815260200160405180910390a1610f42848483818110610f2657610f266132cb565b9050602002016020810190610f3b9190612a1e565b6000611bfe565b600101610e04565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f925760405162461bcd60e51b81526004016106a59061326d565b610c0384848484611e74565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fe65760405162461bcd60e51b81526004016106a59061326d565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561103857600080fd5b505af115801561104c573d6000803e3d6000fd5b5050505050505050565b61105e611c6c565b6106b781612101565b60ce602052816000526040600020818154811061108357600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110ea5760405162461bcd60e51b81526004016106a59061326d565b60006110f584610d89565b600081815260cf60205260408120549192509060ff161561112a5750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff16158080156111535750600054600160ff909116105b8061116d5750303b15801561116d575060005460ff166001145b6111d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff1916600117905580156111f3576000805461ff0019166101001790555b6111fb61216a565b60c9556112088383612201565b61121185611cc6565b61121a84612101565b8015611260576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112915760405162461bcd60e51b81526004016106a590613203565b82811461131a5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114885760d1600087878481811061133c5761133c6132cb565b90506020020160208101906113519190612a1e565b6001600160a01b0316815260208101919091526040016000205460ff1661148057600160d1600088888581811061138a5761138a6132cb565b905060200201602081019061139f9190612a1e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106113fa576113fa6132cb565b905060200201602081019061140f9190612a1e565b6040516001600160a01b03909116815260200160405180910390a161148086868381811061143f5761143f6132cb565b90506020020160208101906114549190612a1e565b858584818110611466576114666132cb565b905060200201602081019061147b919061335a565b611bfe565b60010161131e565b505050505050565b6098546000908190600190811614156114e75760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b6114ef611816565b6114fb33868686611a2f565b91506115076001606555565b509392505050565b611517611c6c565b6001600160a01b03811661157c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611cc6565b60007f00000000000000000000000000000000000000000000000000000000000000004614156115b6575060c95490565b6115be61216a565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190613137565b6001600160a01b0316336001600160a01b03161461166a5760405162461bcd60e51b81526004016106a590613154565b6098541981196098541916146116e85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166117ad5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b600260655414156118695760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b6002606555565b6001600160a01b0383163b1561198f57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118b090869086906004016133cf565b602060405180830381865afa1580156118cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f191906133e8565b6001600160e01b0319161461198a5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119a383836122e7565b6001600160a01b03161461198a5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611ad55760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611aea6001600160a01b038516338786612303565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d9190613412565b9150611b6b86858785611e74565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611bdd57600080fd5b505af1158015611bf1573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611d8d5760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e1f5760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611e6757611e5d858561235d565b6001915050611e6d565b60009150505b9392505050565b6001600160a01b038416611ef05760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f5c5760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052205461206d576001600160a01b038416600090815260ce60209081526040909120541061202e5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120a4908490613441565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561222257506001600160a01b03821615155b6122a45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610ad18261171f565b60008060006122f6858561254f565b9150915061150781612595565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c039085906126e3565b6001600160a01b038216600090815260ce6020526040812054905b81811015612478576001600160a01b03848116600090815260ce60205260409020805491851691839081106123af576123af6132cb565b6000918252602090912001546001600160a01b03161415612470576001600160a01b038416600090815260ce6020526040902080546123f090600190613459565b81548110612400576124006132cb565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061243d5761243d6132cb565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612478565b600101612378565b818114156125005760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce6020526040902080548061252757612527613470565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125865760208301516040840151606085015160001a61257a878285856127b8565b9450945050505061258e565b506000905060025b9250929050565b60008160048111156125a9576125a9613486565b14156125b25750565b60018160048111156125c6576125c6613486565b14156126145760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b600281600481111561262857612628613486565b14156126765760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b600381600481111561268a5761268a613486565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6000612738826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661287c9092919063ffffffff16565b9050805160001480612759575080806020019051810190612759919061319e565b61198a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127ef5750600090506003612873565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612843573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661286c57600060019250925050612873565b9150600090505b94509492505050565b606061288b8484600085612893565b949350505050565b6060824710156128f45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b600080866001600160a01b03168587604051612910919061349c565b60006040518083038185875af1925050503d806000811461294d576040519150601f19603f3d011682016040523d82523d6000602084013e612952565b606091505b50915091506129638783838761296e565b979650505050505050565b606083156129da5782516129d3576001600160a01b0385163b6129d35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b508161288b565b61288b83838151156129ef5781518083602001fd5b8060405162461bcd60e51b81526004016106a591906134b8565b6001600160a01b03811681146106b757600080fd5b600060208284031215612a3057600080fd5b8135611e6d81612a09565b600060208284031215612a4d57600080fd5b5035919050565b8035612a5f81612a09565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612a9d57612a9d612a64565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612acc57612acc612a64565b604052919050565b60008060008060008060c08789031215612aed57600080fd5b8635612af881612a09565b9550602087810135612b0981612a09565b9550604088013594506060880135612b2081612a09565b93506080880135925060a088013567ffffffffffffffff80821115612b4457600080fd5b818a0191508a601f830112612b5857600080fd5b813581811115612b6a57612b6a612a64565b612b7c601f8201601f19168501612aa3565b91508082528b84828501011115612b9257600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612bd457600080fd5b8235612bdf81612a09565b91506020830135612bef81612bb3565b809150509250929050565b600060208284031215612c0c57600080fd5b813560ff81168114611e6d57600080fd5b60008060408385031215612c3057600080fd5b8235612c3b81612a09565b91506020830135612bef81612a09565b600080600060608486031215612c6057600080fd5b8335612c6b81612a09565b92506020840135612c7b81612a09565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612cc55781516001600160a01b031687529582019590820190600101612ca0565b509495945050505050565b600081518084526020808501945080840160005b83811015612cc557815187529582019590820190600101612ce4565b604081526000612d136040830185612c8c565b8281036020840152612d258185612cd0565b95945050505050565b600067ffffffffffffffff821115612d4857612d48612a64565b5060051b60200190565b600082601f830112612d6357600080fd5b81356020612d78612d7383612d2e565b612aa3565b82815260059290921b84018101918181019086841115612d9757600080fd5b8286015b84811015610a92578035612dae81612a09565b8352918301918301612d9b565b600082601f830112612dcc57600080fd5b81356020612ddc612d7383612d2e565b82815260059290921b84018101918181019086841115612dfb57600080fd5b8286015b84811015610a925780358352918301918301612dff565b600060408284031215612e2857600080fd5b6040516040810181811067ffffffffffffffff82111715612e4b57612e4b612a64565b6040529050808235612e5c81612a09565b815260208301356bffffffffffffffffffffffff81168114612e7d57600080fd5b6020919091015292915050565b803563ffffffff81168114612a5f57600080fd5b600060208284031215612eb057600080fd5b813567ffffffffffffffff80821115612ec857600080fd5b9083019060e08286031215612edc57600080fd5b612ee4612a7a565b823582811115612ef357600080fd5b612eff87828601612d52565b825250602083013582811115612f1457600080fd5b612f2087828601612dbb565b602083015250612f3260408401612a54565b6040820152612f448660608501612e16565b6060820152612f5560a08401612e8a565b6080820152612f6660c08401612a54565b60a082015295945050505050565b60008083601f840112612f8657600080fd5b50813567ffffffffffffffff811115612f9e57600080fd5b6020830191508360208260051b850101111561258e57600080fd5b60008060208385031215612fcc57600080fd5b823567ffffffffffffffff811115612fe357600080fd5b612fef85828601612f74565b90969095509350505050565b6000806000806080858703121561301157600080fd5b843561301c81612a09565b9350602085013561302c81612a09565b9250604085013561303c81612a09565b9396929550929360600135925050565b6000806000806080858703121561306257600080fd5b843561306d81612a09565b9350602085013561307d81612a09565b925060408501359150606085013561309481612a09565b939692955090935050565b600080604083850312156130b257600080fd5b82356130bd81612a09565b946020939093013593505050565b600080600080604085870312156130e157600080fd5b843567ffffffffffffffff808211156130f957600080fd5b61310588838901612f74565b9096509450602087013591508082111561311e57600080fd5b5061312b87828801612f74565b95989497509550505050565b60006020828403121561314957600080fd5b8151611e6d81612a09565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156131b057600080fd5b8151611e6d81612bb3565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e0815260006132f460e0830189612c8c565b82810360208401526133068189612cd0565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b60006020828403121561336c57600080fd5b8135611e6d81612bb3565b60005b8381101561339257818101518382015260200161337a565b83811115610c035750506000910152565b600081518084526133bb816020860160208601613377565b601f01601f19169290920160200192915050565b82815260406020820152600061288b60408301846133a3565b6000602082840312156133fa57600080fd5b81516001600160e01b031981168114611e6d57600080fd5b60006020828403121561342457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156134545761345461342b565b500190565b60008282101561346b5761346b61342b565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516134ae818460208701613377565b9190910192915050565b602081526000611e6d60208301846133a356fea2646970667358221220c4d14edc8209c4112dca230018f1f879727d443599b024a8f5a55e488a4e312564736f6c634300080c0033", } // StrategyManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/transparentupgradeableproxy.go b/contracts/bindings/transparentupgradeableproxy.go index d0b9e1617..580367be7 100644 --- a/contracts/bindings/transparentupgradeableproxy.go +++ b/contracts/bindings/transparentupgradeableproxy.go @@ -32,7 +32,7 @@ var ( // TransparentUpgradeableProxyMetaData contains all meta data concerning the TransparentUpgradeableProxy contract. var TransparentUpgradeableProxyMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_logic\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", - Bin: "0x608060405260405162000eda38038062000eda83398101604081905262000026916200049d565b828162000036828260006200004d565b50620000449050826200008a565b505050620005d0565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001791760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eb360279139620002f8565b9392505050565b60006200018060008051602062000e9383398151915260001b6200037760201b620001a51760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e9383398151915260001b6200037760201b620001a51760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001a81760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001a51760201c565b6060600080856001600160a01b0316856040516200031791906200057d565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fa578251620003f2576001600160a01b0385163b620003f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000406565b6200040683836200040e565b949350505050565b8151156200041f5781518083602001fd5b8060405162461bcd60e51b8152600401620001f191906200059b565b80516001600160a01b03811681146200045357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048b57818101518382015260200162000471565b83811115620000835750506000910152565b600080600060608486031215620004b357600080fd5b620004be846200043b565b9250620004ce602085016200043b565b60408501519092506001600160401b0380821115620004ec57600080fd5b818601915086601f8301126200050157600080fd5b81518181111562000516576200051662000458565b604051601f8201601f19908116603f0116810190838211818310171562000541576200054162000458565b816040528281528960208487010111156200055b57600080fd5b6200056e8360208301602088016200046e565b80955050505050509250925092565b60008251620005918184602087016200046e565b9190910192915050565b6020815260008251806020840152620005bc8160408501602087016200046e565b601f01601f19169190910160400192915050565b6108b380620005e06000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101b7565b6001600160a01b0316336001600160a01b0316141561016f5760606001600160e01b031960003516631b2ce7f360e11b8114156100655761005e6101ea565b9150610167565b6001600160e01b0319811663278f794360e11b14156100865761005e610241565b6001600160e01b031981166308f2839760e41b14156100a75761005e610287565b6001600160e01b031981166303e1469160e61b14156100c85761005e6102b8565b6001600160e01b03198116635c60da1b60e01b14156100e95761005e6102f8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b61017761030c565b565b606061019e83836040518060600160405280602781526020016108576027913961031c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101f4610394565b600061020336600481846106a2565b81019061021091906106e8565b905061022d8160405180602001604052806000815250600061039f565b505060408051602081019091526000815290565b606060008061025336600481846106a2565b8101906102609190610719565b915091506102708282600161039f565b604051806020016040528060008152509250505090565b6060610291610394565b60006102a036600481846106a2565b8101906102ad91906106e8565b905061022d816103cb565b60606102c2610394565b60006102cc6101b7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b6060610302610394565b60006102cc610422565b610177610317610422565b610431565b6060600080856001600160a01b0316856040516103399190610807565b600060405180830381855af49150503d8060008114610374576040519150601f19603f3d011682016040523d82523d6000602084013e610379565b606091505b509150915061038a86838387610455565b9695505050505050565b341561017757600080fd5b6103a8836104d3565b6000825111806103b55750805b156103c6576103c48383610179565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103f46101b7565b604080516001600160a01b03928316815291841660208301520160405180910390a161041f81610513565b50565b600061042c6105bc565b905090565b3660008037600080366000845af43d6000803e808015610450573d6000f35b3d6000fd5b606083156104c15782516104ba576001600160a01b0385163b6104ba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161015e565b50816104cb565b6104cb83836105e4565b949350505050565b6104dc8161060e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105785760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161015e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101db565b8151156105f45781518083602001fd5b8060405162461bcd60e51b815260040161015e9190610823565b6001600160a01b0381163b61067b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161015e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61059b565b600080858511156106b257600080fd5b838611156106bf57600080fd5b5050820193919092039150565b80356001600160a01b03811681146106e357600080fd5b919050565b6000602082840312156106fa57600080fd5b61019e826106cc565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561072c57600080fd5b610735836106cc565b9150602083013567ffffffffffffffff8082111561075257600080fd5b818501915085601f83011261076657600080fd5b81358181111561077857610778610703565b604051601f8201601f19908116603f011681019083821181831017156107a0576107a0610703565b816040528281528860208487010111156107b957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107f65781810151838201526020016107de565b838111156103c45750506000910152565b600082516108198184602087016107db565b9190910192915050565b60208152600082518060208401526108428160408501602087016107db565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d3d20b10890338e442119326f806eed7c95a597468e51e051cbb6e55139342f864736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + Bin: "0x608060405260405162000eda38038062000eda83398101604081905262000026916200049d565b828162000036828260006200004d565b50620000449050826200008a565b505050620005d0565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001791760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eb360279139620002f8565b9392505050565b60006200018060008051602062000e9383398151915260001b6200037760201b620001a51760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e9383398151915260001b6200037760201b620001a51760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001a81760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001a51760201c565b6060600080856001600160a01b0316856040516200031791906200057d565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fa578251620003f2576001600160a01b0385163b620003f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000406565b6200040683836200040e565b949350505050565b8151156200041f5781518083602001fd5b8060405162461bcd60e51b8152600401620001f191906200059b565b80516001600160a01b03811681146200045357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048b57818101518382015260200162000471565b83811115620000835750506000910152565b600080600060608486031215620004b357600080fd5b620004be846200043b565b9250620004ce602085016200043b565b60408501519092506001600160401b0380821115620004ec57600080fd5b818601915086601f8301126200050157600080fd5b81518181111562000516576200051662000458565b604051601f8201601f19908116603f0116810190838211818310171562000541576200054162000458565b816040528281528960208487010111156200055b57600080fd5b6200056e8360208301602088016200046e565b80955050505050509250925092565b60008251620005918184602087016200046e565b9190910192915050565b6020815260008251806020840152620005bc8160408501602087016200046e565b601f01601f19169190910160400192915050565b6108b380620005e06000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101b7565b6001600160a01b0316336001600160a01b0316141561016f5760606001600160e01b031960003516631b2ce7f360e11b8114156100655761005e6101ea565b9150610167565b6001600160e01b0319811663278f794360e11b14156100865761005e610241565b6001600160e01b031981166308f2839760e41b14156100a75761005e610287565b6001600160e01b031981166303e1469160e61b14156100c85761005e6102b8565b6001600160e01b03198116635c60da1b60e01b14156100e95761005e6102f8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b61017761030c565b565b606061019e83836040518060600160405280602781526020016108576027913961031c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101f4610394565b600061020336600481846106a2565b81019061021091906106e8565b905061022d8160405180602001604052806000815250600061039f565b505060408051602081019091526000815290565b606060008061025336600481846106a2565b8101906102609190610719565b915091506102708282600161039f565b604051806020016040528060008152509250505090565b6060610291610394565b60006102a036600481846106a2565b8101906102ad91906106e8565b905061022d816103cb565b60606102c2610394565b60006102cc6101b7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b6060610302610394565b60006102cc610422565b610177610317610422565b610431565b6060600080856001600160a01b0316856040516103399190610807565b600060405180830381855af49150503d8060008114610374576040519150601f19603f3d011682016040523d82523d6000602084013e610379565b606091505b509150915061038a86838387610455565b9695505050505050565b341561017757600080fd5b6103a8836104d3565b6000825111806103b55750805b156103c6576103c48383610179565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103f46101b7565b604080516001600160a01b03928316815291841660208301520160405180910390a161041f81610513565b50565b600061042c6105bc565b905090565b3660008037600080366000845af43d6000803e808015610450573d6000f35b3d6000fd5b606083156104c15782516104ba576001600160a01b0385163b6104ba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161015e565b50816104cb565b6104cb83836105e4565b949350505050565b6104dc8161060e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105785760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161015e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101db565b8151156105f45781518083602001fd5b8060405162461bcd60e51b815260040161015e9190610823565b6001600160a01b0381163b61067b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161015e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61059b565b600080858511156106b257600080fd5b838611156106bf57600080fd5b5050820193919092039150565b80356001600160a01b03811681146106e357600080fd5b919050565b6000602082840312156106fa57600080fd5b61019e826106cc565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561072c57600080fd5b610735836106cc565b9150602083013567ffffffffffffffff8082111561075257600080fd5b818501915085601f83011261076657600080fd5b81358181111561077857610778610703565b604051601f8201601f19908116603f011681019083821181831017156107a0576107a0610703565b816040528281528860208487010111156107b957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107f65781810151838201526020016107de565b838111156103c45750506000910152565b600082516108198184602087016107db565b9190910192915050565b60208152600082518060208401526108428160408501602087016107db565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205685c4ad655ee149c77141d53c938af08bb4457fb9509b6f1725a2ee99781c1a64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", } // TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. diff --git a/contracts/src/protocol/OmniAVS.sol b/contracts/src/protocol/OmniAVS.sol index 2b63ed97f..a8e74fa8d 100644 --- a/contracts/src/protocol/OmniAVS.sol +++ b/contracts/src/protocol/OmniAVS.sol @@ -182,33 +182,22 @@ contract OmniAVS is * eigenlayer frontend. */ function getRestakeableStrategies() external view returns (address[] memory) { - address[] memory strategies = new address[](_strategyParams.length); - for (uint256 i = 0; i < _strategyParams.length;) { - strategies[i] = address(_strategyParams[i].strategy); - unchecked { - i++; - } - } - return strategies; + return _getRestakeableStrategies(); } /** * @inheritdoc IServiceManager * @dev Implemented to match IServiceManager interface - required for compatibility with * eigenlayer frontend. + * + * No work to determine which strategies the operator has restaked. This matches the + * behavior defined in eigenlayer-middleware's ServiceManagerBase. In ServiceManagerBase, + * they return the aggregate list of strategies for the quorums the operator is a member of. + * We only have one "quorum", so we return all strategies. */ function getOperatorRestakedStrategies(address operator) external view returns (address[] memory) { - address[] memory strategies = new address[](_strategyParams.length); - for (uint256 i = 0; i < _strategyParams.length;) { - address strat = address(_strategyParams[i].strategy); - if (_delegationManager.operatorShares(operator, IStrategy(strat)) > 0) { - strategies[i] = strat; - } - unchecked { - i++; - } - } - return strategies; + if (!_isOperator(operator)) return new address[](0); + return _getRestakeableStrategies(); } ////////////////////////////////////////////////////////////////////////////// @@ -466,4 +455,18 @@ contract OmniAVS is function _weight(uint256 shares, uint96 multiplier) internal pure returns (uint96) { return uint96(shares * multiplier / STRATEGY_WEIGHTING_DIVISOR); } + + /** + * @notice Returns the list of restakeable strategy addresses + */ + function _getRestakeableStrategies() internal view returns (address[] memory) { + address[] memory strategies = new address[](_strategyParams.length); + for (uint256 i = 0; i < _strategyParams.length;) { + strategies[i] = address(_strategyParams[i].strategy); + unchecked { + i++; + } + } + return strategies; + } } diff --git a/contracts/test/avs/OmniAVS_serviceManager.t.sol b/contracts/test/avs/OmniAVS_serviceManager.t.sol new file mode 100644 index 000000000..cd01bbe00 --- /dev/null +++ b/contracts/test/avs/OmniAVS_serviceManager.t.sol @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: GPL-3.0-only +pragma solidity =0.8.12; + +import { IStrategy } from "eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol"; +import { ISignatureUtils } from "eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol"; +import { IOmniAVS } from "src/interfaces/IOmniAVS.sol"; +import { Base } from "./common/Base.sol"; + +/** + * @title OmniAVS_serviceManager_Test + * @dev Test suite for the AVS "service manager" interface - functions expected by eigenlayer's + * frontend, matching eigenlayer-middleware's IServiceManager. These include + * - getRestakeableStrategies() + * - getOperatorRestakedStrategies(address operator) + * - avsDirectory() + */ +contract OmniAVS_admin_Test is Base { + IStrategy mockStrat1; + IStrategy mockStrat2; + IStrategy mockStrat3; + + uint96 mockStrat1Mul = 1e18; + uint96 mockStrat2Mul = 2e18; + uint96 mockStrat3Mul = 3e18; + + IOmniAVS.StrategyParam[] strategyParams; + + function setUp() public override { + super.setUp(); + + mockStrat1 = IStrategy(makeAddr("mockStrat1")); + mockStrat2 = IStrategy(makeAddr("mockStrat2")); + mockStrat3 = IStrategy(makeAddr("mockStrat3")); + + strategyParams.push(IOmniAVS.StrategyParam(mockStrat1, mockStrat1Mul)); + strategyParams.push(IOmniAVS.StrategyParam(mockStrat2, mockStrat2Mul)); + strategyParams.push(IOmniAVS.StrategyParam(mockStrat3, mockStrat3Mul)); + } + + /// @dev Test that getRestakeableStrategies() matches OmniAVS.strategyParams + function test_getRestakeableStrategies_succeeds() public { + _setStrategyParams(strategyParams); + + address[] memory restakeableStrategies = omniAVS.getRestakeableStrategies(); + + assertEq(restakeableStrategies.length, 3); + assertEq(restakeableStrategies[0], address(mockStrat1)); + assertEq(restakeableStrategies[1], address(mockStrat2)); + assertEq(restakeableStrategies[2], address(mockStrat3)); + } + + /// @dev Test that getRestakeableStrategies() returns an empty list when AVS.strategyParams is empty + function test_getRestakeableStrategies_noStrategies_succeeds() public { + _setStrategyParams(new IOmniAVS.StrategyParam[](0)); + + address[] memory restakeableStrategies = omniAVS.getRestakeableStrategies(); + + assertEq(restakeableStrategies.length, 0); + } + + /// @dev Test that getOperatorRestakedStrategies() matches OmniAVS.strategyParams + /// + /// Note that no work is done to determine if the operator has actually restaked in the strategy + /// This behavior matches that of the middleware's ServiceManagerBase.getOperatorRestakedStrategies() + /// In ServiceManagerBase, they return the aggregate list of strategies for the quorums the operator + /// is a member of. We only have one "quorum", so we return all strategies. + function test_getOperatorRestakedStrategies_succeeds() public { + _setStrategyParams(strategyParams); + + address operator = _operator(0); + _registerAsOperator(operator); + _addToAllowlist(operator); + _registerOperatorWithAVS(operator); + + address[] memory operatorRestakedStrategies = omniAVS.getOperatorRestakedStrategies(operator); + + assertEq(operatorRestakedStrategies.length, 3); + assertEq(operatorRestakedStrategies[0], address(mockStrat1)); + assertEq(operatorRestakedStrategies[1], address(mockStrat2)); + assertEq(operatorRestakedStrategies[2], address(mockStrat3)); + } + + /// @dev Test that getOperatorRestakedStrategies() returns an empty list when AVS.strategyParams is empty + function test_getOperatorRestakedStrategies_noStrategies_succeeds() public { + _setStrategyParams(new IOmniAVS.StrategyParam[](0)); + + address operator = _operator(0); + _registerAsOperator(operator); + _addToAllowlist(operator); + _registerOperatorWithAVS(operator); + + address[] memory operatorRestakedStrategies = omniAVS.getOperatorRestakedStrategies(operator); + + assertEq(operatorRestakedStrategies.length, 0); + } + + /// @dev Test that getOperatorRestakedStrategies() returns an empty list when the operator is not registered + function test_getOPeratorRestakedStrategies_notOperator_succeeds() public { + address operator = _operator(0); + address[] memory operatorRestakedStrategies = omniAVS.getOperatorRestakedStrategies(operator); + + assertEq(operatorRestakedStrategies.length, 0); + } + + /// @dev Test that avsDirectory() returns the correct address + function test_avsDirectory_succeeds() public { + assertEq(omniAVS.avsDirectory(), address(avsDirectory)); + } + + /// @dev Set omniAVS.strategyParams + function _setStrategyParams(IOmniAVS.StrategyParam[] memory _strategyParams) internal { + vm.prank(omniAVSOwner); + omniAVS.setStrategyParams(_strategyParams); + } +} diff --git a/contracts/test/avs/common/Fixtures.sol b/contracts/test/avs/common/Fixtures.sol index 19464b8cd..297a7efda 100644 --- a/contracts/test/avs/common/Fixtures.sol +++ b/contracts/test/avs/common/Fixtures.sol @@ -39,7 +39,7 @@ contract Fixtures is EigenLayerFixtures { /// Canonical, virtual beacon chain ETH strategy address constant beaconChainETHStrategy = 0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0; - function setUp() public override { + function setUp() public virtual override { super.setUp(); portal = new MockPortal();