diff --git a/pkg/bindings/AVSDirectory/binding.go b/pkg/bindings/AVSDirectory/binding.go index 1cacf16dd4..ec270ce33b 100644 --- a/pkg/bindings/AVSDirectory/binding.go +++ b/pkg/bindings/AVSDirectory/binding.go @@ -39,7 +39,7 @@ type ISignatureUtilsMixinTypesSignatureWithSaltAndExpiry struct { // AVSDirectoryMetaData contains all meta data concerning the AVSDirectory contract. var AVSDirectoryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectoryTypes.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\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"isSpent\",\"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\":\"structISignatureUtilsMixinTypes.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\":\"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\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"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\":\"enumIAVSDirectoryTypes.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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorAlreadyRegisteredToAVS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegisteredToAVS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegisteredToEigenLayer\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]}]", - Bin: "0x60e060405234801561000f575f5ffd5b5060405161185938038061185983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c05161152f61032a5f395f81816104240152610d4d01525f8181610360015261053901525f818161023c01528181610ac90152610dbc015261152f5ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a3660046110dc565b6103e3565b005b61018e61016f366004611107565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b1366004611131565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061117c565b6101e561041d565b60405161019a91906111d0565b61015f61044d565b61018e6102083660046111e9565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610461565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f610295366004611277565b610472565b6102216102a8366004611364565b610673565b61015f6102bb3660046113a7565b6106f2565b61015f6102ce3660046113c2565b6107b9565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f610308366004611107565b610800565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b61015f6103903660046110dc565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c33660046113a7565b61091c565b610221610995565b61015f6103de3660046110dc565b610a4e565b6103eb610ab4565b60665481811681146104105760405163c61dca5d60e01b815260040160405180910390fd5b61041982610b57565b5050565b60606104487f0000000000000000000000000000000000000000000000000000000000000000610b94565b905090565b610455610ab4565b61045f5f19610b57565b565b610469610bd1565b61045f5f610c2b565b5f61047c81610c7c565b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156104b5576104b5611168565b036104d357604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561051a57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa15801561057e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a29190611430565b6105bf57604051639f88c8af60e01b815260040160405180910390fd5b6105e3836105d7853386602001518760400151610673565b84516040860151610ca7565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610666919061117c565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f906106e99060c00160405160208183030381529060405280519060200120610cff565b95945050505050565b5f6106fc81610c7c565b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff16600181111561073557610735611168565b14610753576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ad919061117c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371383836040516107f492919061144f565b60405180910390a25050565b5f54610100900460ff161580801561081e57505f54600160ff909116105b806108375750303b15801561083757505f5460ff166001145b61089f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156108c0575f805461ff0019166101001790555b6108c982610b57565b6108d283610c2b565b8015610917575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610924610bd1565b6001600160a01b0381166109895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610896565b61099281610c2b565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610a02610d45565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b610a56610dba565b60665480198219811614610a7d5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107f4565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610b16573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3a9190611430565b61045f57604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610ba083610e6b565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b0316331461045f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610896565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b606654600160ff83161b908116036109925760405163840a48d560e01b815260040160405180910390fd5b42811015610cc857604051630819bdcd60e01b815260040160405180910390fd5b610cdc6001600160a01b0385168484610e98565b610cf957604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610d08610995565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610d717f0000000000000000000000000000000000000000000000000000000000000000610b94565b9050805f81518110610d8557610d8561147d565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e16573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3a9190611491565b6001600160a01b0316336001600160a01b03161461045f5760405163794821ff60e01b815260040160405180910390fd5b5f60ff8216601f811115610e9257604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610ea58585610ef6565b90925090505f816004811115610ebd57610ebd611168565b148015610edb5750856001600160a01b0316826001600160a01b0316145b80610eec5750610eec868686610f38565b9695505050505050565b5f5f8251604103610f2a576020830151604084015160608501515f1a610f1e8782858561101f565b94509450505050610f31565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401610f609291906114ac565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f9e91906114cc565b5f60405180830381855afa9150503d805f8114610fd6576040519150601f19603f3d011682016040523d82523d5f602084013e610fdb565b606091505b5091509150818015610fef57506020815110155b8015610eec57508051630b135d3f60e11b9061101490830160209081019084016114e2565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561105457505f905060036110d3565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156110a5573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166110cd575f600192509250506110d3565b91505f90505b94509492505050565b5f602082840312156110ec575f5ffd5b5035919050565b6001600160a01b0381168114610992575f5ffd5b5f5f60408385031215611118575f5ffd5b8235611123816110f3565b946020939093013593505050565b5f5f60408385031215611142575f5ffd5b823561114d816110f3565b9150602083013561115d816110f3565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061119c57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6111e260208301846111a2565b9392505050565b5f602082840312156111f9575f5ffd5b813560ff811681146111e2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561124057611240611209565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561126f5761126f611209565b604052919050565b5f5f60408385031215611288575f5ffd5b8235611293816110f3565b9150602083013567ffffffffffffffff8111156112ae575f5ffd5b8301606081860312156112bf575f5ffd5b6112c761121d565b813567ffffffffffffffff8111156112dd575f5ffd5b8201601f810187136112ed575f5ffd5b803567ffffffffffffffff81111561130757611307611209565b61131a601f8201601f1916602001611246565b81815288602083850101111561132e575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f60808587031215611377575f5ffd5b8435611382816110f3565b93506020850135611392816110f3565b93969395505050506040820135916060013590565b5f602082840312156113b7575f5ffd5b81356111e2816110f3565b5f5f602083850312156113d3575f5ffd5b823567ffffffffffffffff8111156113e9575f5ffd5b8301601f810185136113f9575f5ffd5b803567ffffffffffffffff81111561140f575f5ffd5b856020828401011115611420575f5ffd5b6020919091019590945092505050565b5f60208284031215611440575f5ffd5b815180151581146111e2575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156114a1575f5ffd5b81516111e2816110f3565b828152604060208201525f6114c460408301846111a2565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156114f2575f5ffd5b505191905056fea26469706673582212200bfbb7b790aa9521312e6eada38ca4d15d86b01e4121980a4c8ac67009e1c7e064736f6c634300081e0033", + Bin: "0x60e060405234801561000f575f5ffd5b5060405161185938038061185983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c05161152f61032a5f395f81816104240152610d4d01525f8181610360015261053901525f818161023c01528181610ac90152610dbc015261152f5ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a3660046110dc565b6103e3565b005b61018e61016f366004611107565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b1366004611131565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061117c565b6101e561041d565b60405161019a91906111d0565b61015f61044d565b61018e6102083660046111e9565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610461565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f610295366004611277565b610472565b6102216102a8366004611364565b610673565b61015f6102bb3660046113a7565b6106f2565b61015f6102ce3660046113c2565b6107b9565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f610308366004611107565b610800565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b61015f6103903660046110dc565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c33660046113a7565b61091c565b610221610995565b61015f6103de3660046110dc565b610a4e565b6103eb610ab4565b60665481811681146104105760405163c61dca5d60e01b815260040160405180910390fd5b61041982610b57565b5050565b60606104487f0000000000000000000000000000000000000000000000000000000000000000610b94565b905090565b610455610ab4565b61045f5f19610b57565b565b610469610bd1565b61045f5f610c2b565b5f61047c81610c7c565b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156104b5576104b5611168565b036104d357604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561051a57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa15801561057e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a29190611430565b6105bf57604051639f88c8af60e01b815260040160405180910390fd5b6105e3836105d7853386602001518760400151610673565b84516040860151610ca7565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610666919061117c565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f906106e99060c00160405160208183030381529060405280519060200120610cff565b95945050505050565b5f6106fc81610c7c565b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff16600181111561073557610735611168565b14610753576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ad919061117c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371383836040516107f492919061144f565b60405180910390a25050565b5f54610100900460ff161580801561081e57505f54600160ff909116105b806108375750303b15801561083757505f5460ff166001145b61089f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156108c0575f805461ff0019166101001790555b6108c982610b57565b6108d283610c2b565b8015610917575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610924610bd1565b6001600160a01b0381166109895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610896565b61099281610c2b565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610a02610d45565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b610a56610dba565b60665480198219811614610a7d5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107f4565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610b16573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3a9190611430565b61045f57604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610ba083610e6b565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b0316331461045f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610896565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b606654600160ff83161b908116036109925760405163840a48d560e01b815260040160405180910390fd5b42811015610cc857604051630819bdcd60e01b815260040160405180910390fd5b610cdc6001600160a01b0385168484610e98565b610cf957604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610d08610995565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610d717f0000000000000000000000000000000000000000000000000000000000000000610b94565b9050805f81518110610d8557610d8561147d565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e16573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3a9190611491565b6001600160a01b0316336001600160a01b03161461045f5760405163794821ff60e01b815260040160405180910390fd5b5f60ff8216601f811115610e9257604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610ea58585610ef6565b90925090505f816004811115610ebd57610ebd611168565b148015610edb5750856001600160a01b0316826001600160a01b0316145b80610eec5750610eec868686610f38565b9695505050505050565b5f5f8251604103610f2a576020830151604084015160608501515f1a610f1e8782858561101f565b94509450505050610f31565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401610f609291906114ac565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f9e91906114cc565b5f60405180830381855afa9150503d805f8114610fd6576040519150601f19603f3d011682016040523d82523d5f602084013e610fdb565b606091505b5091509150818015610fef57506020815110155b8015610eec57508051630b135d3f60e11b9061101490830160209081019084016114e2565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561105457505f905060036110d3565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156110a5573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166110cd575f600192509250506110d3565b91505f90505b94509492505050565b5f602082840312156110ec575f5ffd5b5035919050565b6001600160a01b0381168114610992575f5ffd5b5f5f60408385031215611118575f5ffd5b8235611123816110f3565b946020939093013593505050565b5f5f60408385031215611142575f5ffd5b823561114d816110f3565b9150602083013561115d816110f3565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061119c57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6111e260208301846111a2565b9392505050565b5f602082840312156111f9575f5ffd5b813560ff811681146111e2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561124057611240611209565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561126f5761126f611209565b604052919050565b5f5f60408385031215611288575f5ffd5b8235611293816110f3565b9150602083013567ffffffffffffffff8111156112ae575f5ffd5b8301606081860312156112bf575f5ffd5b6112c761121d565b813567ffffffffffffffff8111156112dd575f5ffd5b8201601f810187136112ed575f5ffd5b803567ffffffffffffffff81111561130757611307611209565b61131a601f8201601f1916602001611246565b81815288602083850101111561132e575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f60808587031215611377575f5ffd5b8435611382816110f3565b93506020850135611392816110f3565b93969395505050506040820135916060013590565b5f602082840312156113b7575f5ffd5b81356111e2816110f3565b5f5f602083850312156113d3575f5ffd5b823567ffffffffffffffff8111156113e9575f5ffd5b8301601f810185136113f9575f5ffd5b803567ffffffffffffffff81111561140f575f5ffd5b856020828401011115611420575f5ffd5b6020919091019590945092505050565b5f60208284031215611440575f5ffd5b815180151581146111e2575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156114a1575f5ffd5b81516111e2816110f3565b828152604060208201525f6114c460408301846111a2565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156114f2575f5ffd5b505191905056fea264697066735822122064697c4fdcc50736b33bd46e800e17ba533956006c6510b66a7dabda26daab2a64736f6c634300081e0033", } // AVSDirectoryABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/AllocationManager/binding.go b/pkg/bindings/AllocationManager/binding.go index 17814d3c88..486a9ad3d7 100644 --- a/pkg/bindings/AllocationManager/binding.go +++ b/pkg/bindings/AllocationManager/binding.go @@ -88,7 +88,7 @@ type OperatorSet struct { // AllocationManagerMetaData contains all meta data concerning the AllocationManager contract. var AllocationManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_allocationManagerView\",\"type\":\"address\",\"internalType\":\"contractIAllocationManagerView\"},{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_eigenStrategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_DEALLOCATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_ALLOCATION_CONFIGURATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ALLOCATION_CONFIGURATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEALLOCATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToClear\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParamsV2[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"slasher\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRedistributingOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]},{\"name\":\"redistributionRecipients\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRedistributingOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParamsV2[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"slasher\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"redistributionRecipients\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterFromOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.DeregisterParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eigenStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"allocatableMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStake\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"allocation\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"allocations\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEncumberedMagnitude\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"maxMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"maxMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"maxMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"memberCount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"count\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingSlasher\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"pendingSlasher\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRedistributionRecipient\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashCount\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"slashCount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlasher\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"allocations\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMemberOfOperatorSet\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorRedistributable\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRedistributingOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateSlashers\",\"inputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.AllocateParams[]\",\"components\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"newMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"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\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerForOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.RegisterParams\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.SlashingParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadsToSlash\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSlasher\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slasher\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"viewImplementation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"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\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"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\":\"RedistributionAddressSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"redistributionRecipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlasherMigrated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slasher\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlasherUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slasher\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"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\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Empty\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAVSRegistrar\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRedistributionRecipient\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NonexistentAVSMetadata\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorSetAlreadyMigrated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SlasherNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesMustBeInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]", - Bin: "0x610160604052348015610010575f5ffd5b5060405161599e38038061599e83398101604081905261002f91610192565b868387878585896001600160a01b03811661005d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c05263ffffffff90811660e052166101005290811661012052166101405261009b6100a7565b50505050505050610221565b5f54610100900460ff16156101125760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610161575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610177575f5ffd5b50565b805163ffffffff8116811461018d575f5ffd5b919050565b5f5f5f5f5f5f5f60e0888a0312156101a8575f5ffd5b87516101b381610163565b60208901519097506101c481610163565b60408901519096506101d581610163565b60608901519095506101e681610163565b60808901519094506101f781610163565b925061020560a0890161017a565b915061021360c0890161017a565b905092959891949750929550565b60805160a05160c05160e05161010051610120516101405161569261030c5f395f81816103860152818161093f01528181610a1f01528181610a4e01528181610a9801528181610ac301528181610d1f01528181610fc3015281816120f301526123ce01525f81816105800152818161198a015261374501525f81816106b701528181613439015261362701525f818161047b015281816112f3015261171401525f818161084d01526132cb01525f818161088201528181610ec501528181610f1301528181611c1d0152612ebb01525f81816106de0152818161261d0152613c0201526156925ff3fe608060405234801561000f575f5ffd5b506004361061037d575f3560e01c80636cfb4481116101d4578063b66bd98911610109578063d7794857116100a9578063f231bd0811610079578063f231bd08146108a4578063f605ce0814610679578063fabc1cbc146108b7578063fe4b84df146108ca575f5ffd5b8063d779485714610811578063db4df76114610848578063dc2af6921461086f578063df5cf7231461087d575f5ffd5b8063c221d8ae116100e4578063c221d8ae146107c5578063d1a83f54146107d8578063d3d96ff4146107eb578063d4a3fcce146107fe575f5ffd5b8063b66bd98914610775578063b9fbaed114610788578063ba1a84e5146107b7575f5ffd5b806394d7d00c11610174578063a9333ec81161014f578063a9333ec814610679578063a98218211461074f578063adc2e3d914610762578063b2447af7146105d0575f5ffd5b806394d7d00c1461071b578063952899ee14610729578063957dc50b1461073c575f5ffd5b806379ae50cd116101af57806379ae50cd146104305780637bc1ef61146106b2578063886f1195146106d95780638ce6485414610700575f5ffd5b80636cfb4481146106795780636e3492b51461069f5780636e875dba14610560575f5ffd5b80633dff8e7d116102b557806350feea20116102555780635ac86ab7116102255780635ac86ab7146106285780635c975abb1461064b578063670d3ba2146106535780636c9d7c5814610666575f5ffd5b806350feea20146105ec578063547afb87146105ff57806356c483e61461060d578063595c6a6714610620575f5ffd5b80634657e26a116102905780634657e26a1461057b5780634a10ffe5146105a25780634b5046ef146105bd5780634cfd2939146105d0575f5ffd5b80633dff8e7d1461052c57806340120dab1461053f5780634177a87c14610560575f5ffd5b8063261f84e0116103205780632bab2c4a116102fb5780632bab2c4a146104d2578063304c10cd146104e557806332a879e4146104f8578063363520571461050b575f5ffd5b8063261f84e0146104635780632981eb77146104765780632b453a9a146104b2575f5ffd5b80631352c3e61161035b5780631352c3e6146103f8578063136439dd1461041b57806315fe502814610430578063260dc75814610450575f5ffd5b80630b156bb6146103815780630f3df50e146103c557806310e1b9b8146103d8575b5f5ffd5b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6103a86103d33660046143aa565b6108dd565b6103eb6103e63660046143c4565b61091e565b6040516103bc919061440b565b61040b61040636600461443e565b610963565b60405190151581526020016103bc565b61042e610429366004614472565b6109de565b005b61044361043e366004614489565b610a18565b6040516103bc9190614507565b61040b61045e3660046143aa565b610a48565b61042e610471366004614559565b610a72565b61049d7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103bc565b6104c56104c036600461463e565b610a91565b6040516103bc91906146e1565b6104c56104e0366004614744565b610abc565b6103a86104f3366004614489565b610aef565b61042e6105063660046147c8565b610b1e565b61051e610519366004614848565b610b46565b6040516103bc92919061489a565b61042e61053a366004614990565b610c9b565b61055261054d3660046149dc565b610d17565b6040516103bc929190614a69565b61056e61043e3660046143aa565b6040516103bc9190614a8d565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b6105b06104c0366004614ad8565b6040516103bc9190614b1f565b61042e6105cb3660046147c8565b610d4a565b6105de61045e3660046143aa565b6040519081526020016103bc565b61042e6105fa366004614b5f565b610de6565b6105b06104c0366004614559565b61042e61061b366004614bbd565b610eba565b61042e610fa9565b61040b610636366004614be7565b606654600160ff9092169190911b9081161490565b6066546105de565b61040b61066136600461443e565b610fbd565b61042e610674366004614c07565b610fe7565b6106876106613660046149dc565b6040516001600160401b0390911681526020016103bc565b61042e6106ad366004614c48565b61107d565b61049d7f000000000000000000000000000000000000000000000000000000000000000081565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b61070e6104c0366004614c79565b6040516103bc9190614cbc565b6105b06104e0366004614cce565b61042e610737366004614d25565b611438565b61042e61074a366004614ece565b6118c9565b61042e61075d366004614f5e565b611b54565b61042e610770366004614fdc565b611be9565b61042e610783366004614b5f565b611f15565b61079b610796366004614489565b612052565b60408051921515835263ffffffff9091166020830152016103bc565b6105de61045e366004614489565b61056e6107d336600461443e565b6120ec565b61042e6107e636600461501e565b612117565b61042e6107f93660046149dc565b612230565b6103a861080c3660046143aa565b612340565b61082461081f3660046143aa565b6123c7565b604080516001600160a01b03909316835263ffffffff9091166020830152016103bc565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b61040b61045e366004614489565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b61040b6108b23660046143aa565b6123f7565b61042e6108c5366004614472565b612416565b61042e6108d8366004614472565b612483565b5f5f60a65f6108eb85612594565b815260208101919091526040015f20546001600160a01b0316905080156109125780610917565b620e16e45b9392505050565b604080516060810182525f80825260208201819052918101919091526109177f00000000000000000000000000000000000000000000000000000000000000006125f7565b6001600160a01b0382165f908152609e6020526040812081908161098685612594565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806109d45750806020015163ffffffff164311155b9150505b92915050565b6109e6612608565b6066548181168114610a0b5760405163c61dca5d60e01b815260040160405180910390fd5b610a14826126ab565b5050565b6060610a437f00000000000000000000000000000000000000000000000000000000000000006125f7565b919050565b5f610a437f00000000000000000000000000000000000000000000000000000000000000006125f7565b82610a7c816126e8565b610a8b8461053a858588612711565b50505050565b60606109177f00000000000000000000000000000000000000000000000000000000000000006125f7565b6060610ae77f00000000000000000000000000000000000000000000000000000000000000006125f7565b949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610b175780610917565b5090919050565b84610b28816126e8565b610b3e86610b3787878a612711565b8585612117565b505050505050565b5f60606001610b5481612888565b5f6040518060400160405280876001600160a01b03168152602001866020016020810190610b82919061507d565b63ffffffff1690529050610b996060860186615096565b9050610ba86040870187615096565b905014610bc8576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610bfa9163ffffffff908116906128b316565b610c1757604051631fb1705560e21b815260040160405180910390fd5b610c2d610c276020870187614489565b82610963565b610c4a5760405163ebbff49760e01b815260040160405180910390fd5b610c5381612340565b6001600160a01b0316336001600160a01b031614610c84576040516348f5c3ed60e01b815260040160405180910390fd5b610c8e85826128ca565b9350935050509250929050565b81610ca5816126e8565b6001600160a01b0383165f90815260a4602052604090205460ff16610cdd576040516348f7dbb960e01b815260040160405180910390fd5b5f5b8251811015610a8b57610d0f84848381518110610cfe57610cfe6150db565b6020026020010151620e16e4613025565b600101610cdf565b606080610d437f00000000000000000000000000000000000000000000000000000000000000006125f7565b9250929050565b5f610d5481612888565b838214610d74576040516343714afd60e01b815260040160405180910390fd5b5f5b84811015610ddd57610dd587878784818110610d9457610d946150db565b9050602002016020810190610da99190614489565b868685818110610dbb57610dbb6150db565b9050602002016020810190610dd091906150ef565b613197565b600101610d76565b50505050505050565b83610df0816126e8565b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192610e2f92916128b316565b610e4c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610ddd57610eb282868684818110610e6c57610e6c6150db565b9050602002016020810190610e819190614489565b610ead60405180604001604052808c6001600160a01b031681526020018b63ffffffff168152506123f7565b61329b565b600101610e4e565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f9957610ef4836126e8565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015610f58573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7c9190615110565b610f995760405163ccea9e6f60e01b815260040160405180910390fd5b610fa483838361337b565b505050565b610fb1612608565b610fbb5f196126ab565b565b5f6109d87f00000000000000000000000000000000000000000000000000000000000000006125f7565b8151610ff2816126e8565b60208084015184516001600160a01b03165f908152609890925260409091206110249163ffffffff908116906128b316565b61104157604051631fb1705560e21b815260040160405180910390fd5b5f61104b84612340565b6001600160a01b0316036110725760405163255b0f4160e01b815260040160405180910390fd5b610fa483835f61354b565b600261108881612888565b61109d6110986020840184614489565b613707565b806110b657506110b66110986040840160208501614489565b6110d3576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b6110e26040840184615096565b90508110156113a4575f604051806040016040528085602001602081019061110a9190614489565b6001600160a01b031681526020016111256040870187615096565b85818110611135576111356150db565b905060200201602081019061114a919061507d565b63ffffffff168152509050611197816020015163ffffffff1660985f8760200160208101906111799190614489565b6001600160a01b0316815260208101919091526040015f20906128b3565b6111b457604051631fb1705560e21b815260040160405180910390fd5b609e5f6111c46020870187614489565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6111ed83612594565b815260208101919091526040015f205460ff1661121d576040516325131d4f60e01b815260040160405180910390fd5b61125761122982612594565b609c5f6112396020890189614489565b6001600160a01b0316815260208101919091526040015f20906137b0565b5061128f6112686020860186614489565b609a5f61127485612594565b81526020019081526020015f206137bb90919063ffffffff16565b5061129d6020850185614489565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe826040516112d5919061512f565b60405180910390a2604080518082019091525f8152602081016113187f000000000000000000000000000000000000000000000000000000000000000043615151565b63ffffffff169052609e5f6113306020880188614489565b6001600160a01b03166001600160a01b031681526020019081526020015f205f61135984612594565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff1990931692909217179055506001016110d5565b506113b86104f36040840160208501614489565b6001600160a01b031663303ca9566113d36020850185614489565b6113e36040860160208701614489565b6113f06040870187615096565b6040518563ffffffff1660e01b815260040161140f94939291906151a6565b5f604051808303815f87803b158015611426575f5ffd5b505af1158015610b3e573d5f5f3e3d5ffd5b5f61144281612888565b61144b836126e8565b5f5f5f61145786612052565b91509150816114795760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b83518110156118c25783818151811061149a5761149a6150db565b602002602001015160400151518482815181106114b9576114b96150db565b60200260200101516020015151146114e4576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106114f7576114f76150db565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506115379163ffffffff908116906128b316565b61155457604051631fb1705560e21b815260040160405180910390fd5b5f61155f8783610963565b90505f5b868481518110611575576115756150db565b602002602001015160200151518110156118b7575f87858151811061159c5761159c6150db565b60200260200101516020015182815181106115b9576115b96150db565b602002602001015190506115d0898261ffff613197565b5f5f6115e58b6115df88612594565b856137cf565b91509150806040015163ffffffff165f1461161357604051630d8fcbe360e41b815260040160405180910390fd5b5f6116208785848961393b565b9050611665825f01518c8a8151811061163b5761163b6150db565b6020026020010151604001518781518110611658576116586150db565b6020026020010151613973565b600f0b602083018190525f0361168e57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b12156117d25780156117545761170f6116af88612594565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6117397f000000000000000000000000000000000000000000000000000000000000000043615151565b611744906001615151565b63ffffffff16604083015261183f565b6117668360200151836020015161398a565b6001600160401b031660208401528a518b9089908110611788576117886150db565b60200260200101516040015185815181106117a5576117a56150db565b6020908102919091018101516001600160401b031683525f9083015263ffffffff4316604083015261183f565b5f8260200151600f0b131561183f576117f38360200151836020015161398a565b6001600160401b03908116602085018190528451909116101561182957604051636c9be0bf60e01b815260040160405180910390fd5b6118338943615151565b63ffffffff1660408301525b6118548c61184c89612594565b8686866139a9565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886611889865f0151876020015161398a565b866040015160405161189f9594939291906151d2565b60405180910390a15050600190920191506115639050565b50505060010161147f565b5050505050565b5f5b8151811015610a14576119488282815181106118e9576118e96150db565b60200260200101516020015163ffffffff1660985f858581518110611910576119106150db565b60200260200101515f01516001600160a01b03166001600160a01b031681526020019081526020015f206128b390919063ffffffff16565b15611b4c575f6001600160a01b031661197983838151811061196c5761196c6150db565b6020026020010151612340565b6001600160a01b031603611b4c575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fddbdefd8484815181106119c9576119c96150db565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152633635205760e01b60448201526064015f60405180830381865afa158015611a29573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a509190810190615223565b90505f81515f1480611a8c57505f6001600160a01b0316825f81518110611a7957611a796150db565b60200260200101516001600160a01b0316145b15611ab557838381518110611aa357611aa36150db565b60200260200101515f01519050611ad2565b815f81518110611ac757611ac76150db565b602002602001015190505b611af7848481518110611ae757611ae76150db565b602002602001015182600161354b565b7ff0c8fc7d71f647bd3a88ac369112517f6a4b8038e71913f2d20f71f877dfc725848481518110611b2a57611b2a6150db565b602002602001015182604051611b419291906152b2565b60405180910390a150505b6001016118cb565b82611b5e816126e8565b6001600160a01b0384165f90815260a4602052604090205460ff16611ba0576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138484604051611bdb929190615300565b60405180910390a250505050565b6002611bf481612888565b82611bfe816126e8565b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611c62573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c869190615110565b611ca35760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b611cb26020850185615096565b9050811015611e7a57604080518082019091525f9080611cd56020880188614489565b6001600160a01b03168152602001868060200190611cf39190615096565b85818110611d0357611d036150db565b9050602002016020810190611d18919061507d565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350611d549291908116906128b316565b611d7157604051631fb1705560e21b815260040160405180910390fd5b611d7b8682610963565b15611d9957604051636c6c6e2760e11b815260040160405180910390fd5b611dc2611da582612594565b6001600160a01b0388165f908152609c6020526040902090613be1565b50611dee86609a5f611dd385612594565b81526020019081526020015f20613bec90919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051611e28919061512f565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191611e5384612594565b815260208101919091526040015f20805460ff191691151591909117905550600101611ca5565b50611e8b6104f36020850185614489565b6001600160a01b031663c63fd50285611ea76020870187614489565b611eb46020880188615096565b611ec160408a018a615313565b6040518763ffffffff1660e01b8152600401611ee296959493929190615355565b5f604051808303815f87803b158015611ef9575f5ffd5b505af1158015611f0b573d5f5f3e3d5ffd5b5050505050505050565b83611f1f816126e8565b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192611f5e92916128b316565b611f7b57604051631fb1705560e21b815260040160405180910390fd5b5f611f8582612594565b90505f5b84811015611f0b57611fce868683818110611fa657611fa66150db565b9050602002016020810190611fbb9190614489565b5f848152609960205260409020906137bb565b611feb576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee8387878481811061201f5761201f6150db565b90506020020160208101906120349190614489565b6040516120429291906152b2565b60405180910390a1600101611f89565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b9091041660608201819052849391929190158015906120d35750826060015163ffffffff164310155b156120e2575050604081015160015b9590945092505050565b60606109d87f00000000000000000000000000000000000000000000000000000000000000006125f7565b83612121816126e8565b83518214612142576040516343714afd60e01b815260040160405180910390fd5b6001600160a01b0385165f90815260a4602052604090205460ff1661217a576040516348f7dbb960e01b815260040160405180910390fd5b5f5b8451811015610b3e575f848483818110612198576121986150db565b90506020020160208101906121ad9190614489565b90506001600160a01b0381166121d6576040516339b190bb60e11b815260040160405180910390fd5b620e16e3196001600160a01b03821601612203576040516364be1a3f60e11b815260040160405180910390fd5b61222787878481518110612219576122196150db565b602002602001015183613025565b5060010161217c565b8161223a816126e8565b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa15801561227e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a29190615110565b6122bf57604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361231781610aef565b604080516001600160a01b039384168152929091166020830152015b60405180910390a1505050565b5f5f60a75f61234e85612594565b815260208082019290925260409081015f20815160608101835281546001600160a01b0390811680835260019093015490811694820194909452600160a01b90930463ffffffff16918301829052919250158015906123b75750816040015163ffffffff164310155b1561091757506020015192915050565b5f5f6123f27f00000000000000000000000000000000000000000000000000000000000000006125f7565b915091565b5f620e16e4612405836108dd565b6001600160a01b0316141592915050565b61241e613c00565b606654801982198116146124455760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f54610100900460ff16158080156124a157505f54600160ff909116105b806124ba5750303b1580156124ba57505f5460ff166001145b6125225760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612543575f805461ff0019166101001790555b61254c826126ab565b8015610a14575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f815f0151826020015163ffffffff166040516020016125df92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526109d8906153a1565b613cb180610fa48363ffffffff8316565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561266a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061268e9190615110565b610fbb57604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6126f181613707565b61270e5760405163932d94f760e01b815260040160405180910390fd5b50565b60605f836001600160401b0381111561272c5761272c6142ba565b60405190808252806020026020018201604052801561278e57816020015b61277b60405180606001604052805f63ffffffff168152602001606081526020015f6001600160a01b031681525090565b81526020019060019003908161274a5790505b5090505f5b8481101561287f5760405180606001604052808787848181106127b8576127b86150db565b90506020028101906127ca91906153c4565b6127d890602081019061507d565b63ffffffff1681526020018787848181106127f5576127f56150db565b905060200281019061280791906153c4565b612815906020810190615096565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506001600160a01b038616602090910152825183908390811061286c5761286c6150db565b6020908102919091010152600101612793565b50949350505050565b606654600160ff83161b9081160361270e5760405163840a48d560e01b815260040160405180910390fd5b5f8181526001830160205260408120541515610917565b5f6060816128db6040860186615096565b90506001600160401b038111156128f4576128f46142ba565b60405190808252806020026020018201604052801561291d578160200160208202803683370190505b50905061292d6040860186615096565b90506001600160401b03811115612946576129466142ba565b60405190808252806020026020018201604052801561296f578160200160208202803683370190505b50915060a55f61297e86612594565b81526020019081526020015f205f8154612997906153e2565b918290555092505f5b6129ad6040870187615096565b9050811015612fb757801580612a4057506129cb6040870187615096565b6129d66001846153fa565b8181106129e5576129e56150db565b90506020020160208101906129fa9190614489565b6001600160a01b0316612a106040880188615096565b83818110612a2057612a206150db565b9050602002016020810190612a359190614489565b6001600160a01b0316115b612a5d57604051639f1c805360e01b815260040160405180910390fd5b612a6a6060870187615096565b82818110612a7a57612a7a6150db565b905060200201355f108015612aba5750670de0b6b3a7640000612aa06060880188615096565b83818110612ab057612ab06150db565b9050602002013511155b612ad757604051631353603160e01b815260040160405180910390fd5b612b33612ae76040880188615096565b83818110612af757612af76150db565b9050602002016020810190612b0c9190614489565b60995f612b1889612594565b81526020019081526020015f20613ccf90919063ffffffff16565b612b50576040516331bc342760e11b815260040160405180910390fd5b5f80612ba2612b6260208a018a614489565b612b6b89612594565b612b7860408c018c615096565b87818110612b8857612b886150db565b9050602002016020810190612b9d9190614489565b6137cf565b805191935091506001600160401b03165f03612bbf575050612faf565b5f612bfa612bd060608b018b615096565b86818110612be057612be06150db565b85516001600160401b031692602090910201359050613cf0565b8351909150612c156001600160401b03808416908316613d06565b868681518110612c2757612c276150db565b60200260200101818152505081835f01818151612c44919061540d565b6001600160401b0316905250835182908590612c6190839061540d565b6001600160401b0316905250602084018051839190612c8190839061540d565b6001600160401b031690525060208301515f600f9190910b1215612d99575f612ce4612cb060608d018d615096565b88818110612cc057612cc06150db565b905060200201358560200151612cd59061542c565b6001600160801b031690613cf0565b9050806001600160401b031684602001818151612d019190615450565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd612d3560208d018d614489565b8b612d4360408f018f615096565b8a818110612d5357612d536150db565b9050602002016020810190612d689190614489565b612d79885f0151896020015161398a565b8860400151604051612d8f9594939291906151d2565b60405180910390a1505b612deb612da960208c018c614489565b612db28b612594565b612dbf60408e018e615096565b89818110612dcf57612dcf6150db565b9050602002016020810190612de49190614489565b87876139a9565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd612e1960208c018c614489565b8a612e2760408e018e615096565b89818110612e3757612e376150db565b9050602002016020810190612e4c9190614489565b8651604051612e60949392919043906151d2565b60405180910390a1612eb1612e7860208c018c614489565b612e8560408d018d615096565b88818110612e9557612e956150db565b9050602002016020810190612eaa9190614489565b8651613d1a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635ae679a7612eed60208d018d614489565b8b8b8e8060400190612eff9190615096565b8b818110612f0f57612f0f6150db565b9050602002016020810190612f249190614489565b89516040516001600160e01b031960e088901b168152612f4c9594939291899160040161547d565b6020604051808303815f875af1158015612f68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f8c91906154d0565b878681518110612f9e57612f9e6150db565b602002602001018181525050505050505b6001016129a0565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe5612fe66020870187614489565b85612ff46040890189615096565b8561300260808c018c615313565b60405161301597969594939291906154e7565b60405180910390a1509250929050565b6040805180820182526001600160a01b038516808252845163ffffffff90811660208085018290525f938452609890529390912091926130669291613be116565b61308357604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c816040516130b2919061512f565b60405180910390a16001600160a01b038216620e16e414801590613147578260a65f6130dd85612594565b81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055507f90a6fa2a9b79b910872ebca540cf3bd8be827f586e6420c30d8836e30012907e828460405161313e9291906152b2565b60405180910390a15b5f5b8460200151518110156131865761317e8386602001518381518110613170576131706150db565b60200260200101518461329b565b600101613149565b506118c2828560400151600161354b565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f811180156131e157508261ffff1682105b156118c2576001600160a01b038086165f90815260a360209081526040808320938816835292905290812061321590613d9c565b90505f5f6132248884896137cf565b91509150806040015163ffffffff16431015613242575050506118c2565b61324f88848985856139a9565b6001600160a01b038089165f90815260a360209081526040808320938b1683529290522061327c90613dee565b50613286856153e2565b94506132918461557d565b93505050506131cf565b801561331d576001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01480159061330057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b61331d57604051632711b74d60e11b815260040160405180910390fd5b61332d8260995f611dd387612594565b61334a5760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83836040516123339291906152b2565b6001600160a01b0383165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b9092041660608201819052158015906133f75750806060015163ffffffff164310155b1561341157604081015163ffffffff168152600160208201525b63ffffffff8316604082015281156134345763ffffffff43166060820152613475565b61345e7f000000000000000000000000000000000000000000000000000000000000000043615151565b613469906001615151565b63ffffffff1660608201525b6001600160a01b0384165f818152609b60209081526040918290208451815486840151878601516060808a015163ffffffff95861664ffffffffff1990951694909417600160201b93151593909302929092176cffffffffffffffff0000000000191665010000000000918516919091026cffffffff000000000000000000191617600160481b92841692830217909355845195865290881692850192909252918301527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db91015b60405180910390a150505050565b6001600160a01b038216613572576040516339b190bb60e11b815260040160405180910390fd5b5f60a75f61357f86612594565b815260208082019290925260409081015f20815160608101835281546001600160a01b03908116825260019092015491821693810193909352600160a01b900463ffffffff16908201819052909150158015906135e65750806040015163ffffffff164310155b156135fc5760208101516001600160a01b031681525b6001600160a01b038316602082015281156136225763ffffffff43166040820152613663565b61364c7f000000000000000000000000000000000000000000000000000000000000000043615151565b613657906001615151565b63ffffffff1660408201525b8060a75f61367087612594565b815260208082019290925260409081015f20835181546001600160a01b039182166001600160a01b031990911617825592840151600190910180549483015163ffffffff16600160a01b026001600160c01b031990951691909316179290921790558181015190517f3873f29d7a65a4d75f5ba28909172f486216a1420e77c3c2720815951a6b4f579161353d9187918791615592565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb890608401602060405180830381865afa15801561378c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d89190615110565b5f6109178383613e6b565b5f610917836001600160a01b038416613e6b565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a184528685209088168552909252938220929392819061382f90613f4e565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff169181018290529192504310156138d1579092509050613933565b6138e2815f0151826020015161398a565b6001600160401b0316815260208101515f600f9190910b1215613920576139118260200151826020015161398a565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b5f61394c8460995f612b1889612594565b80156139555750815b801561396a575082516001600160401b031615155b95945050505050565b5f6109176001600160401b038085169084166155c5565b5f6109176139a1836001600160401b038616615450565b600f0b613f61565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a6f57602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613b51576001600160a01b0385165f908152609f602090815260408083208784529091529020613b299084613bec565b506001600160a01b0385165f908152609d60205260409020613b4b9085613be1565b506118c2565b80516001600160401b03165f036118c2576001600160a01b0385165f908152609f602090815260408083208784529091529020613b8e90846137bb565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613bba90613fcc565b5f036118c2576001600160a01b0385165f908152609d60205260409020610b3e90856137b0565b5f6109178383613fd5565b5f610917836001600160a01b038416613fd5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c8091906155f2565b6001600160a01b0316336001600160a01b031614610fbb5760405163794821ff60e01b815260040160405180910390fd5b365f5f375f5f365f845af43d5f5f3e808015613ccb573d5ff35b3d5ffd5b6001600160a01b0381165f9081526001830160205260408120541515610917565b5f6109178383670de0b6b3a76400006001614021565b5f61091783670de0b6b3a76400008461407a565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613d4990438361415f565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c90606001612333565b5f613db68254600f81810b600160801b909204900b131590565b15613dd457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f613e088254600f81810b600160801b909204900b131590565b15613e2657604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f8181526001830160205260408120548015613f45575f613e8d6001836153fa565b85549091505f90613ea0906001906153fa565b9050818114613eff575f865f018281548110613ebe57613ebe6150db565b905f5260205f200154905080875f018481548110613ede57613ede6150db565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080613f1057613f1061560d565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506109d8565b5f9150506109d8565b5f6109d882670de0b6b3a7640000614173565b5f6001600160401b03821115613fc85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612519565b5090565b5f6109d8825490565b5f81815260018301602052604081205461401a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556109d8565b505f6109d8565b5f5f61402e86868661407a565b9050600183600281111561404457614044615621565b14801561406057505f848061405b5761405b615635565b868809115b1561396a57614070600182615649565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036140b1578382816140a7576140a7615635565b0492505050610917565b8084116140f85760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612519565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b610fa483836001600160401b0384166141b7565b81545f9080156141af576141998461418c6001846153fa565b5f91825260209091200190565b54600160201b90046001600160e01b03166109d4565b509092915050565b8254801561426d575f6141cf8561418c6001856153fa565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156142215760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff80861691160361426b57826142428661418c6001866153fa565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156142f0576142f06142ba565b60405290565b604051601f8201601f191681016001600160401b038111828210171561431e5761431e6142ba565b604052919050565b6001600160a01b038116811461270e575f5ffd5b803563ffffffff81168114610a43575f5ffd5b5f6040828403121561435d575f5ffd5b604080519081016001600160401b038111828210171561437f5761437f6142ba565b604052905080823561439081614326565b815261439e6020840161433a565b60208201525092915050565b5f604082840312156143ba575f5ffd5b610917838361434d565b5f5f5f608084860312156143d6575f5ffd5b83356143e181614326565b92506143f0856020860161434d565b9150606084013561440081614326565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff1690820152606081016109d8565b5f5f6060838503121561444f575f5ffd5b823561445a81614326565b9150614469846020850161434d565b90509250929050565b5f60208284031215614482575f5ffd5b5035919050565b5f60208284031215614499575f5ffd5b813561091781614326565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b828110156144fd576144e78683516144a4565b60409590950194602091909101906001016144d4565b5093949350505050565b602081525f61091760208301846144c2565b5f5f83601f840112614529575f5ffd5b5081356001600160401b0381111561453f575f5ffd5b6020830191508360208260051b8501011115610d43575f5ffd5b5f5f5f6040848603121561456b575f5ffd5b833561457681614326565b925060208401356001600160401b03811115614590575f5ffd5b61459c86828701614519565b9497909650939450505050565b5f6001600160401b038211156145c1576145c16142ba565b5060051b60200190565b5f82601f8301126145da575f5ffd5b81356145ed6145e8826145a9565b6142f6565b8082825260208201915060208360051b86010192508583111561460e575f5ffd5b602085015b8381101561463457803561462681614326565b835260209283019201614613565b5095945050505050565b5f5f5f60808486031215614650575f5ffd5b61465a858561434d565b925060408401356001600160401b03811115614674575f5ffd5b614680868287016145cb565b92505060608401356001600160401b0381111561469b575f5ffd5b6146a7868287016145cb565b9150509250925092565b5f8151808452602084019350602083015f5b828110156144fd5781518652602095860195909101906001016146c3565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561473857603f198786030184526147238583516146b1565b94506020938401939190910190600101614707565b50929695505050505050565b5f5f5f5f60a08587031215614757575f5ffd5b614761868661434d565b935060408501356001600160401b0381111561477b575f5ffd5b614787878288016145cb565b93505060608501356001600160401b038111156147a2575f5ffd5b6147ae878288016145cb565b9250506147bd6080860161433a565b905092959194509250565b5f5f5f5f5f606086880312156147dc575f5ffd5b85356147e781614326565b945060208601356001600160401b03811115614801575f5ffd5b61480d88828901614519565b90955093505060408601356001600160401b0381111561482b575f5ffd5b61483788828901614519565b969995985093965092949392505050565b5f5f60408385031215614859575f5ffd5b823561486481614326565b915060208301356001600160401b0381111561487e575f5ffd5b830160a0818603121561488f575f5ffd5b809150509250929050565b828152604060208201525f610ae760408301846146b1565b5f82601f8301126148c1575f5ffd5b81356148cf6145e8826145a9565b8082825260208201915060208360051b8601019250858311156148f0575f5ffd5b602085015b838110156146345780356001600160401b03811115614912575f5ffd5b86016060818903601f19011215614927575f5ffd5b61492f6142ce565b61493b6020830161433a565b815260408201356001600160401b03811115614955575f5ffd5b6149648a6020838601016145cb565b6020830152506060820135915061497a82614326565b60408101919091528352602092830192016148f5565b5f5f604083850312156149a1575f5ffd5b82356149ac81614326565b915060208301356001600160401b038111156149c6575f5ffd5b6149d2858286016148b2565b9150509250929050565b5f5f604083850312156149ed575f5ffd5b82356149f881614326565b9150602083013561488f81614326565b5f8151808452602084019350602083015f5b828110156144fd57614a5386835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614a1a565b604081525f614a7b60408301856144c2565b828103602084015261396a8185614a08565b602080825282518282018190525f918401906040840190835b81811015614acd5783516001600160a01b0316835260209384019390920191600101614aa6565b509095945050505050565b5f5f5f60408486031215614aea575f5ffd5b83356001600160401b03811115614aff575f5ffd5b614b0b86828701614519565b909450925050602084013561440081614326565b602080825282518282018190525f918401906040840190835b81811015614acd5783516001600160401b0316835260209384019390920191600101614b38565b5f5f5f5f60608587031215614b72575f5ffd5b8435614b7d81614326565b9350614b8b6020860161433a565b925060408501356001600160401b03811115614ba5575f5ffd5b614bb187828801614519565b95989497509550505050565b5f5f60408385031215614bce575f5ffd5b8235614bd981614326565b91506144696020840161433a565b5f60208284031215614bf7575f5ffd5b813560ff81168114610917575f5ffd5b5f5f60608385031215614c18575f5ffd5b614c22848461434d565b9150604083013561488f81614326565b5f60608284031215614c42575f5ffd5b50919050565b5f60208284031215614c58575f5ffd5b81356001600160401b03811115614c6d575f5ffd5b6109d484828501614c32565b5f5f5f60808486031215614c8b575f5ffd5b83356001600160401b03811115614ca0575f5ffd5b614cac868287016145cb565b9350506143f0856020860161434d565b602081525f6109176020830184614a08565b5f5f5f5f60608587031215614ce1575f5ffd5b8435614cec81614326565b935060208501356001600160401b03811115614d06575f5ffd5b614d1287828801614519565b90945092506147bd90506040860161433a565b5f5f60408385031215614d36575f5ffd5b8235614d4181614326565b915060208301356001600160401b03811115614d5b575f5ffd5b8301601f81018513614d6b575f5ffd5b8035614d796145e8826145a9565b8082825260208201915060208360051b850101925087831115614d9a575f5ffd5b602084015b83811015614ebf5780356001600160401b03811115614dbc575f5ffd5b85016080818b03601f19011215614dd1575f5ffd5b614dd96142ce565b614de68b6020840161434d565b815260608201356001600160401b03811115614e00575f5ffd5b614e0f8c6020838601016145cb565b60208301525060808201356001600160401b03811115614e2d575f5ffd5b6020818401019250508a601f830112614e44575f5ffd5b8135614e526145e8826145a9565b8082825260208201915060208360051b86010192508d831115614e73575f5ffd5b6020850194505b82851015614ea95784356001600160401b0381168114614e98575f5ffd5b825260209485019490910190614e7a565b6040840152505084525060209283019201614d9f565b50809450505050509250929050565b5f60208284031215614ede575f5ffd5b81356001600160401b03811115614ef3575f5ffd5b8201601f81018413614f03575f5ffd5b8035614f116145e8826145a9565b8082825260208201915060208360061b850101925086831115614f32575f5ffd5b6020840193505b8284101561407057614f4b878561434d565b8252602082019150604084019350614f39565b5f5f5f60408486031215614f70575f5ffd5b8335614f7b81614326565b925060208401356001600160401b03811115614f95575f5ffd5b8401601f81018613614fa5575f5ffd5b80356001600160401b03811115614fba575f5ffd5b866020828401011115614fcb575f5ffd5b939660209190910195509293505050565b5f5f60408385031215614fed575f5ffd5b8235614ff881614326565b915060208301356001600160401b03811115615012575f5ffd5b6149d285828601614c32565b5f5f5f5f60608587031215615031575f5ffd5b843561503c81614326565b935060208501356001600160401b03811115615056575f5ffd5b615062878288016148b2565b93505060408501356001600160401b03811115614ba5575f5ffd5b5f6020828403121561508d575f5ffd5b6109178261433a565b5f5f8335601e198436030181126150ab575f5ffd5b8301803591506001600160401b038211156150c4575f5ffd5b6020019150600581901b3603821315610d43575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156150ff575f5ffd5b813561ffff81168114610917575f5ffd5b5f60208284031215615120575f5ffd5b81518015158114610917575f5ffd5b604081016109d882846144a4565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff81811683821601908111156109d8576109d861513d565b8183526020830192505f815f5b848110156144fd5763ffffffff6151908361433a565b168652602095860195919091019060010161517a565b6001600160a01b038581168252841660208201526060604082018190525f90614070908301848661516d565b6001600160a01b038616815260c081016151ef60208301876144a4565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f60208284031215615233575f5ffd5b81516001600160401b03811115615248575f5ffd5b8201601f81018413615258575f5ffd5b80516152666145e8826145a9565b8082825260208201915060208360051b850101925086831115615287575f5ffd5b6020840193505b828410156140705783516152a181614326565b82526020938401939091019061528e565b606081016152c082856144a4565b6001600160a01b039290921660409190910152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f610ae76020830184866152d8565b5f5f8335601e19843603018112615328575f5ffd5b8301803591506001600160401b03821115615341575f5ffd5b602001915036819003821315610d43575f5ffd5b6001600160a01b038781168252861660208201526080604082018190525f90615381908301868861516d565b82810360608401526153948185876152d8565b9998505050505050505050565b80516020808301519190811015614c42575f1960209190910360031b1b16919050565b5f8235603e198336030181126153d8575f5ffd5b9190910192915050565b5f600182016153f3576153f361513d565b5060010190565b818103818111156109d8576109d861513d565b6001600160401b0382811682821603908111156109d8576109d861513d565b5f81600f0b60016001607f1b031981036154485761544861513d565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156109d8576109d861513d565b6001600160a01b038716815260e0810161549a60208301886144a4565b60608201959095526001600160a01b039390931660808401526001600160401b0391821660a08401521660c09091015292915050565b5f602082840312156154e0575f5ffd5b5051919050565b6001600160a01b03881681525f60c08201615505602084018a6144a4565b60c060608401528690528660e083015f5b8881101561554657823561552981614326565b6001600160a01b0316825260209283019290910190600101615516565b50838103608085015261555981886146b1565b91505082810360a084015261556f8185876152d8565b9a9950505050505050505050565b5f8161558b5761558b61513d565b505f190190565b608081016155a082866144a4565b6001600160a01b0393909316604082015263ffffffff91909116606090910152919050565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156109d8576109d861513d565b5f60208284031215615602575f5ffd5b815161091781614326565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b808201808211156109d8576109d861513d56fea2646970667358221220f39e929aefb219811189fd7284232cabb65bdf5bcf89c15791dd7b7525f51f8e64736f6c634300081e0033", + Bin: "0x610160604052348015610010575f5ffd5b5060405161599e38038061599e83398101604081905261002f91610192565b868387878585896001600160a01b03811661005d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c05263ffffffff90811660e052166101005290811661012052166101405261009b6100a7565b50505050505050610221565b5f54610100900460ff16156101125760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610161575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610177575f5ffd5b50565b805163ffffffff8116811461018d575f5ffd5b919050565b5f5f5f5f5f5f5f60e0888a0312156101a8575f5ffd5b87516101b381610163565b60208901519097506101c481610163565b60408901519096506101d581610163565b60608901519095506101e681610163565b60808901519094506101f781610163565b925061020560a0890161017a565b915061021360c0890161017a565b905092959891949750929550565b60805160a05160c05160e05161010051610120516101405161569261030c5f395f81816103860152818161093f01528181610a1f01528181610a4e01528181610a9801528181610ac301528181610d1f01528181610fc3015281816120f301526123ce01525f81816105800152818161198a015261374501525f81816106b701528181613439015261362701525f818161047b015281816112f3015261171401525f818161084d01526132cb01525f818161088201528181610ec501528181610f1301528181611c1d0152612ebb01525f81816106de0152818161261d0152613c0201526156925ff3fe608060405234801561000f575f5ffd5b506004361061037d575f3560e01c80636cfb4481116101d4578063b66bd98911610109578063d7794857116100a9578063f231bd0811610079578063f231bd08146108a4578063f605ce0814610679578063fabc1cbc146108b7578063fe4b84df146108ca575f5ffd5b8063d779485714610811578063db4df76114610848578063dc2af6921461086f578063df5cf7231461087d575f5ffd5b8063c221d8ae116100e4578063c221d8ae146107c5578063d1a83f54146107d8578063d3d96ff4146107eb578063d4a3fcce146107fe575f5ffd5b8063b66bd98914610775578063b9fbaed114610788578063ba1a84e5146107b7575f5ffd5b806394d7d00c11610174578063a9333ec81161014f578063a9333ec814610679578063a98218211461074f578063adc2e3d914610762578063b2447af7146105d0575f5ffd5b806394d7d00c1461071b578063952899ee14610729578063957dc50b1461073c575f5ffd5b806379ae50cd116101af57806379ae50cd146104305780637bc1ef61146106b2578063886f1195146106d95780638ce6485414610700575f5ffd5b80636cfb4481146106795780636e3492b51461069f5780636e875dba14610560575f5ffd5b80633dff8e7d116102b557806350feea20116102555780635ac86ab7116102255780635ac86ab7146106285780635c975abb1461064b578063670d3ba2146106535780636c9d7c5814610666575f5ffd5b806350feea20146105ec578063547afb87146105ff57806356c483e61461060d578063595c6a6714610620575f5ffd5b80634657e26a116102905780634657e26a1461057b5780634a10ffe5146105a25780634b5046ef146105bd5780634cfd2939146105d0575f5ffd5b80633dff8e7d1461052c57806340120dab1461053f5780634177a87c14610560575f5ffd5b8063261f84e0116103205780632bab2c4a116102fb5780632bab2c4a146104d2578063304c10cd146104e557806332a879e4146104f8578063363520571461050b575f5ffd5b8063261f84e0146104635780632981eb77146104765780632b453a9a146104b2575f5ffd5b80631352c3e61161035b5780631352c3e6146103f8578063136439dd1461041b57806315fe502814610430578063260dc75814610450575f5ffd5b80630b156bb6146103815780630f3df50e146103c557806310e1b9b8146103d8575b5f5ffd5b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6103a86103d33660046143aa565b6108dd565b6103eb6103e63660046143c4565b61091e565b6040516103bc919061440b565b61040b61040636600461443e565b610963565b60405190151581526020016103bc565b61042e610429366004614472565b6109de565b005b61044361043e366004614489565b610a18565b6040516103bc9190614507565b61040b61045e3660046143aa565b610a48565b61042e610471366004614559565b610a72565b61049d7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103bc565b6104c56104c036600461463e565b610a91565b6040516103bc91906146e1565b6104c56104e0366004614744565b610abc565b6103a86104f3366004614489565b610aef565b61042e6105063660046147c8565b610b1e565b61051e610519366004614848565b610b46565b6040516103bc92919061489a565b61042e61053a366004614990565b610c9b565b61055261054d3660046149dc565b610d17565b6040516103bc929190614a69565b61056e61043e3660046143aa565b6040516103bc9190614a8d565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b6105b06104c0366004614ad8565b6040516103bc9190614b1f565b61042e6105cb3660046147c8565b610d4a565b6105de61045e3660046143aa565b6040519081526020016103bc565b61042e6105fa366004614b5f565b610de6565b6105b06104c0366004614559565b61042e61061b366004614bbd565b610eba565b61042e610fa9565b61040b610636366004614be7565b606654600160ff9092169190911b9081161490565b6066546105de565b61040b61066136600461443e565b610fbd565b61042e610674366004614c07565b610fe7565b6106876106613660046149dc565b6040516001600160401b0390911681526020016103bc565b61042e6106ad366004614c48565b61107d565b61049d7f000000000000000000000000000000000000000000000000000000000000000081565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b61070e6104c0366004614c79565b6040516103bc9190614cbc565b6105b06104e0366004614cce565b61042e610737366004614d25565b611438565b61042e61074a366004614ece565b6118c9565b61042e61075d366004614f5e565b611b54565b61042e610770366004614fdc565b611be9565b61042e610783366004614b5f565b611f15565b61079b610796366004614489565b612052565b60408051921515835263ffffffff9091166020830152016103bc565b6105de61045e366004614489565b61056e6107d336600461443e565b6120ec565b61042e6107e636600461501e565b612117565b61042e6107f93660046149dc565b612230565b6103a861080c3660046143aa565b612340565b61082461081f3660046143aa565b6123c7565b604080516001600160a01b03909316835263ffffffff9091166020830152016103bc565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b61040b61045e366004614489565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b61040b6108b23660046143aa565b6123f7565b61042e6108c5366004614472565b612416565b61042e6108d8366004614472565b612483565b5f5f60a65f6108eb85612594565b815260208101919091526040015f20546001600160a01b0316905080156109125780610917565b620e16e45b9392505050565b604080516060810182525f80825260208201819052918101919091526109177f00000000000000000000000000000000000000000000000000000000000000006125f7565b6001600160a01b0382165f908152609e6020526040812081908161098685612594565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806109d45750806020015163ffffffff164311155b9150505b92915050565b6109e6612608565b6066548181168114610a0b5760405163c61dca5d60e01b815260040160405180910390fd5b610a14826126ab565b5050565b6060610a437f00000000000000000000000000000000000000000000000000000000000000006125f7565b919050565b5f610a437f00000000000000000000000000000000000000000000000000000000000000006125f7565b82610a7c816126e8565b610a8b8461053a858588612711565b50505050565b60606109177f00000000000000000000000000000000000000000000000000000000000000006125f7565b6060610ae77f00000000000000000000000000000000000000000000000000000000000000006125f7565b949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610b175780610917565b5090919050565b84610b28816126e8565b610b3e86610b3787878a612711565b8585612117565b505050505050565b5f60606001610b5481612888565b5f6040518060400160405280876001600160a01b03168152602001866020016020810190610b82919061507d565b63ffffffff1690529050610b996060860186615096565b9050610ba86040870187615096565b905014610bc8576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610bfa9163ffffffff908116906128b316565b610c1757604051631fb1705560e21b815260040160405180910390fd5b610c2d610c276020870187614489565b82610963565b610c4a5760405163ebbff49760e01b815260040160405180910390fd5b610c5381612340565b6001600160a01b0316336001600160a01b031614610c84576040516348f5c3ed60e01b815260040160405180910390fd5b610c8e85826128ca565b9350935050509250929050565b81610ca5816126e8565b6001600160a01b0383165f90815260a4602052604090205460ff16610cdd576040516348f7dbb960e01b815260040160405180910390fd5b5f5b8251811015610a8b57610d0f84848381518110610cfe57610cfe6150db565b6020026020010151620e16e4613025565b600101610cdf565b606080610d437f00000000000000000000000000000000000000000000000000000000000000006125f7565b9250929050565b5f610d5481612888565b838214610d74576040516343714afd60e01b815260040160405180910390fd5b5f5b84811015610ddd57610dd587878784818110610d9457610d946150db565b9050602002016020810190610da99190614489565b868685818110610dbb57610dbb6150db565b9050602002016020810190610dd091906150ef565b613197565b600101610d76565b50505050505050565b83610df0816126e8565b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192610e2f92916128b316565b610e4c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610ddd57610eb282868684818110610e6c57610e6c6150db565b9050602002016020810190610e819190614489565b610ead60405180604001604052808c6001600160a01b031681526020018b63ffffffff168152506123f7565b61329b565b600101610e4e565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f9957610ef4836126e8565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015610f58573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7c9190615110565b610f995760405163ccea9e6f60e01b815260040160405180910390fd5b610fa483838361337b565b505050565b610fb1612608565b610fbb5f196126ab565b565b5f6109d87f00000000000000000000000000000000000000000000000000000000000000006125f7565b8151610ff2816126e8565b60208084015184516001600160a01b03165f908152609890925260409091206110249163ffffffff908116906128b316565b61104157604051631fb1705560e21b815260040160405180910390fd5b5f61104b84612340565b6001600160a01b0316036110725760405163255b0f4160e01b815260040160405180910390fd5b610fa483835f61354b565b600261108881612888565b61109d6110986020840184614489565b613707565b806110b657506110b66110986040840160208501614489565b6110d3576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b6110e26040840184615096565b90508110156113a4575f604051806040016040528085602001602081019061110a9190614489565b6001600160a01b031681526020016111256040870187615096565b85818110611135576111356150db565b905060200201602081019061114a919061507d565b63ffffffff168152509050611197816020015163ffffffff1660985f8760200160208101906111799190614489565b6001600160a01b0316815260208101919091526040015f20906128b3565b6111b457604051631fb1705560e21b815260040160405180910390fd5b609e5f6111c46020870187614489565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6111ed83612594565b815260208101919091526040015f205460ff1661121d576040516325131d4f60e01b815260040160405180910390fd5b61125761122982612594565b609c5f6112396020890189614489565b6001600160a01b0316815260208101919091526040015f20906137b0565b5061128f6112686020860186614489565b609a5f61127485612594565b81526020019081526020015f206137bb90919063ffffffff16565b5061129d6020850185614489565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe826040516112d5919061512f565b60405180910390a2604080518082019091525f8152602081016113187f000000000000000000000000000000000000000000000000000000000000000043615151565b63ffffffff169052609e5f6113306020880188614489565b6001600160a01b03166001600160a01b031681526020019081526020015f205f61135984612594565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff1990931692909217179055506001016110d5565b506113b86104f36040840160208501614489565b6001600160a01b031663303ca9566113d36020850185614489565b6113e36040860160208701614489565b6113f06040870187615096565b6040518563ffffffff1660e01b815260040161140f94939291906151a6565b5f604051808303815f87803b158015611426575f5ffd5b505af1158015610b3e573d5f5f3e3d5ffd5b5f61144281612888565b61144b836126e8565b5f5f5f61145786612052565b91509150816114795760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b83518110156118c25783818151811061149a5761149a6150db565b602002602001015160400151518482815181106114b9576114b96150db565b60200260200101516020015151146114e4576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106114f7576114f76150db565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506115379163ffffffff908116906128b316565b61155457604051631fb1705560e21b815260040160405180910390fd5b5f61155f8783610963565b90505f5b868481518110611575576115756150db565b602002602001015160200151518110156118b7575f87858151811061159c5761159c6150db565b60200260200101516020015182815181106115b9576115b96150db565b602002602001015190506115d0898261ffff613197565b5f5f6115e58b6115df88612594565b856137cf565b91509150806040015163ffffffff165f1461161357604051630d8fcbe360e41b815260040160405180910390fd5b5f6116208785848961393b565b9050611665825f01518c8a8151811061163b5761163b6150db565b6020026020010151604001518781518110611658576116586150db565b6020026020010151613973565b600f0b602083018190525f0361168e57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b12156117d25780156117545761170f6116af88612594565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6117397f000000000000000000000000000000000000000000000000000000000000000043615151565b611744906001615151565b63ffffffff16604083015261183f565b6117668360200151836020015161398a565b6001600160401b031660208401528a518b9089908110611788576117886150db565b60200260200101516040015185815181106117a5576117a56150db565b6020908102919091018101516001600160401b031683525f9083015263ffffffff4316604083015261183f565b5f8260200151600f0b131561183f576117f38360200151836020015161398a565b6001600160401b03908116602085018190528451909116101561182957604051636c9be0bf60e01b815260040160405180910390fd5b6118338943615151565b63ffffffff1660408301525b6118548c61184c89612594565b8686866139a9565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886611889865f0151876020015161398a565b866040015160405161189f9594939291906151d2565b60405180910390a15050600190920191506115639050565b50505060010161147f565b5050505050565b5f5b8151811015610a14576119488282815181106118e9576118e96150db565b60200260200101516020015163ffffffff1660985f858581518110611910576119106150db565b60200260200101515f01516001600160a01b03166001600160a01b031681526020019081526020015f206128b390919063ffffffff16565b15611b4c575f6001600160a01b031661197983838151811061196c5761196c6150db565b6020026020010151612340565b6001600160a01b031603611b4c575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fddbdefd8484815181106119c9576119c96150db565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152633635205760e01b60448201526064015f60405180830381865afa158015611a29573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a509190810190615223565b90505f81515f1480611a8c57505f6001600160a01b0316825f81518110611a7957611a796150db565b60200260200101516001600160a01b0316145b15611ab557838381518110611aa357611aa36150db565b60200260200101515f01519050611ad2565b815f81518110611ac757611ac76150db565b602002602001015190505b611af7848481518110611ae757611ae76150db565b602002602001015182600161354b565b7ff0c8fc7d71f647bd3a88ac369112517f6a4b8038e71913f2d20f71f877dfc725848481518110611b2a57611b2a6150db565b602002602001015182604051611b419291906152b2565b60405180910390a150505b6001016118cb565b82611b5e816126e8565b6001600160a01b0384165f90815260a4602052604090205460ff16611ba0576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138484604051611bdb929190615300565b60405180910390a250505050565b6002611bf481612888565b82611bfe816126e8565b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611c62573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c869190615110565b611ca35760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b611cb26020850185615096565b9050811015611e7a57604080518082019091525f9080611cd56020880188614489565b6001600160a01b03168152602001868060200190611cf39190615096565b85818110611d0357611d036150db565b9050602002016020810190611d18919061507d565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350611d549291908116906128b316565b611d7157604051631fb1705560e21b815260040160405180910390fd5b611d7b8682610963565b15611d9957604051636c6c6e2760e11b815260040160405180910390fd5b611dc2611da582612594565b6001600160a01b0388165f908152609c6020526040902090613be1565b50611dee86609a5f611dd385612594565b81526020019081526020015f20613bec90919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051611e28919061512f565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191611e5384612594565b815260208101919091526040015f20805460ff191691151591909117905550600101611ca5565b50611e8b6104f36020850185614489565b6001600160a01b031663c63fd50285611ea76020870187614489565b611eb46020880188615096565b611ec160408a018a615313565b6040518763ffffffff1660e01b8152600401611ee296959493929190615355565b5f604051808303815f87803b158015611ef9575f5ffd5b505af1158015611f0b573d5f5f3e3d5ffd5b5050505050505050565b83611f1f816126e8565b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192611f5e92916128b316565b611f7b57604051631fb1705560e21b815260040160405180910390fd5b5f611f8582612594565b90505f5b84811015611f0b57611fce868683818110611fa657611fa66150db565b9050602002016020810190611fbb9190614489565b5f848152609960205260409020906137bb565b611feb576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee8387878481811061201f5761201f6150db565b90506020020160208101906120349190614489565b6040516120429291906152b2565b60405180910390a1600101611f89565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b9091041660608201819052849391929190158015906120d35750826060015163ffffffff164310155b156120e2575050604081015160015b9590945092505050565b60606109d87f00000000000000000000000000000000000000000000000000000000000000006125f7565b83612121816126e8565b83518214612142576040516343714afd60e01b815260040160405180910390fd5b6001600160a01b0385165f90815260a4602052604090205460ff1661217a576040516348f7dbb960e01b815260040160405180910390fd5b5f5b8451811015610b3e575f848483818110612198576121986150db565b90506020020160208101906121ad9190614489565b90506001600160a01b0381166121d6576040516339b190bb60e11b815260040160405180910390fd5b620e16e3196001600160a01b03821601612203576040516364be1a3f60e11b815260040160405180910390fd5b61222787878481518110612219576122196150db565b602002602001015183613025565b5060010161217c565b8161223a816126e8565b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa15801561227e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a29190615110565b6122bf57604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361231781610aef565b604080516001600160a01b039384168152929091166020830152015b60405180910390a1505050565b5f5f60a75f61234e85612594565b815260208082019290925260409081015f20815160608101835281546001600160a01b0390811680835260019093015490811694820194909452600160a01b90930463ffffffff16918301829052919250158015906123b75750816040015163ffffffff164310155b1561091757506020015192915050565b5f5f6123f27f00000000000000000000000000000000000000000000000000000000000000006125f7565b915091565b5f620e16e4612405836108dd565b6001600160a01b0316141592915050565b61241e613c00565b606654801982198116146124455760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f54610100900460ff16158080156124a157505f54600160ff909116105b806124ba5750303b1580156124ba57505f5460ff166001145b6125225760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612543575f805461ff0019166101001790555b61254c826126ab565b8015610a14575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f815f0151826020015163ffffffff166040516020016125df92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526109d8906153a1565b613cb180610fa48363ffffffff8316565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561266a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061268e9190615110565b610fbb57604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6126f181613707565b61270e5760405163932d94f760e01b815260040160405180910390fd5b50565b60605f836001600160401b0381111561272c5761272c6142ba565b60405190808252806020026020018201604052801561278e57816020015b61277b60405180606001604052805f63ffffffff168152602001606081526020015f6001600160a01b031681525090565b81526020019060019003908161274a5790505b5090505f5b8481101561287f5760405180606001604052808787848181106127b8576127b86150db565b90506020028101906127ca91906153c4565b6127d890602081019061507d565b63ffffffff1681526020018787848181106127f5576127f56150db565b905060200281019061280791906153c4565b612815906020810190615096565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506001600160a01b038616602090910152825183908390811061286c5761286c6150db565b6020908102919091010152600101612793565b50949350505050565b606654600160ff83161b9081160361270e5760405163840a48d560e01b815260040160405180910390fd5b5f8181526001830160205260408120541515610917565b5f6060816128db6040860186615096565b90506001600160401b038111156128f4576128f46142ba565b60405190808252806020026020018201604052801561291d578160200160208202803683370190505b50905061292d6040860186615096565b90506001600160401b03811115612946576129466142ba565b60405190808252806020026020018201604052801561296f578160200160208202803683370190505b50915060a55f61297e86612594565b81526020019081526020015f205f8154612997906153e2565b918290555092505f5b6129ad6040870187615096565b9050811015612fb757801580612a4057506129cb6040870187615096565b6129d66001846153fa565b8181106129e5576129e56150db565b90506020020160208101906129fa9190614489565b6001600160a01b0316612a106040880188615096565b83818110612a2057612a206150db565b9050602002016020810190612a359190614489565b6001600160a01b0316115b612a5d57604051639f1c805360e01b815260040160405180910390fd5b612a6a6060870187615096565b82818110612a7a57612a7a6150db565b905060200201355f108015612aba5750670de0b6b3a7640000612aa06060880188615096565b83818110612ab057612ab06150db565b9050602002013511155b612ad757604051631353603160e01b815260040160405180910390fd5b612b33612ae76040880188615096565b83818110612af757612af76150db565b9050602002016020810190612b0c9190614489565b60995f612b1889612594565b81526020019081526020015f20613ccf90919063ffffffff16565b612b50576040516331bc342760e11b815260040160405180910390fd5b5f80612ba2612b6260208a018a614489565b612b6b89612594565b612b7860408c018c615096565b87818110612b8857612b886150db565b9050602002016020810190612b9d9190614489565b6137cf565b805191935091506001600160401b03165f03612bbf575050612faf565b5f612bfa612bd060608b018b615096565b86818110612be057612be06150db565b85516001600160401b031692602090910201359050613cf0565b8351909150612c156001600160401b03808416908316613d06565b868681518110612c2757612c276150db565b60200260200101818152505081835f01818151612c44919061540d565b6001600160401b0316905250835182908590612c6190839061540d565b6001600160401b0316905250602084018051839190612c8190839061540d565b6001600160401b031690525060208301515f600f9190910b1215612d99575f612ce4612cb060608d018d615096565b88818110612cc057612cc06150db565b905060200201358560200151612cd59061542c565b6001600160801b031690613cf0565b9050806001600160401b031684602001818151612d019190615450565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd612d3560208d018d614489565b8b612d4360408f018f615096565b8a818110612d5357612d536150db565b9050602002016020810190612d689190614489565b612d79885f0151896020015161398a565b8860400151604051612d8f9594939291906151d2565b60405180910390a1505b612deb612da960208c018c614489565b612db28b612594565b612dbf60408e018e615096565b89818110612dcf57612dcf6150db565b9050602002016020810190612de49190614489565b87876139a9565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd612e1960208c018c614489565b8a612e2760408e018e615096565b89818110612e3757612e376150db565b9050602002016020810190612e4c9190614489565b8651604051612e60949392919043906151d2565b60405180910390a1612eb1612e7860208c018c614489565b612e8560408d018d615096565b88818110612e9557612e956150db565b9050602002016020810190612eaa9190614489565b8651613d1a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635ae679a7612eed60208d018d614489565b8b8b8e8060400190612eff9190615096565b8b818110612f0f57612f0f6150db565b9050602002016020810190612f249190614489565b89516040516001600160e01b031960e088901b168152612f4c9594939291899160040161547d565b6020604051808303815f875af1158015612f68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f8c91906154d0565b878681518110612f9e57612f9e6150db565b602002602001018181525050505050505b6001016129a0565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe5612fe66020870187614489565b85612ff46040890189615096565b8561300260808c018c615313565b60405161301597969594939291906154e7565b60405180910390a1509250929050565b6040805180820182526001600160a01b038516808252845163ffffffff90811660208085018290525f938452609890529390912091926130669291613be116565b61308357604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c816040516130b2919061512f565b60405180910390a16001600160a01b038216620e16e414801590613147578260a65f6130dd85612594565b81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055507f90a6fa2a9b79b910872ebca540cf3bd8be827f586e6420c30d8836e30012907e828460405161313e9291906152b2565b60405180910390a15b5f5b8460200151518110156131865761317e8386602001518381518110613170576131706150db565b60200260200101518461329b565b600101613149565b506118c2828560400151600161354b565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f811180156131e157508261ffff1682105b156118c2576001600160a01b038086165f90815260a360209081526040808320938816835292905290812061321590613d9c565b90505f5f6132248884896137cf565b91509150806040015163ffffffff16431015613242575050506118c2565b61324f88848985856139a9565b6001600160a01b038089165f90815260a360209081526040808320938b1683529290522061327c90613dee565b50613286856153e2565b94506132918461557d565b93505050506131cf565b801561331d576001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01480159061330057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b61331d57604051632711b74d60e11b815260040160405180910390fd5b61332d8260995f611dd387612594565b61334a5760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83836040516123339291906152b2565b6001600160a01b0383165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b9092041660608201819052158015906133f75750806060015163ffffffff164310155b1561341157604081015163ffffffff168152600160208201525b63ffffffff8316604082015281156134345763ffffffff43166060820152613475565b61345e7f000000000000000000000000000000000000000000000000000000000000000043615151565b613469906001615151565b63ffffffff1660608201525b6001600160a01b0384165f818152609b60209081526040918290208451815486840151878601516060808a015163ffffffff95861664ffffffffff1990951694909417600160201b93151593909302929092176cffffffffffffffff0000000000191665010000000000918516919091026cffffffff000000000000000000191617600160481b92841692830217909355845195865290881692850192909252918301527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db91015b60405180910390a150505050565b6001600160a01b038216613572576040516339b190bb60e11b815260040160405180910390fd5b5f60a75f61357f86612594565b815260208082019290925260409081015f20815160608101835281546001600160a01b03908116825260019092015491821693810193909352600160a01b900463ffffffff16908201819052909150158015906135e65750806040015163ffffffff164310155b156135fc5760208101516001600160a01b031681525b6001600160a01b038316602082015281156136225763ffffffff43166040820152613663565b61364c7f000000000000000000000000000000000000000000000000000000000000000043615151565b613657906001615151565b63ffffffff1660408201525b8060a75f61367087612594565b815260208082019290925260409081015f20835181546001600160a01b039182166001600160a01b031990911617825592840151600190910180549483015163ffffffff16600160a01b026001600160c01b031990951691909316179290921790558181015190517f3873f29d7a65a4d75f5ba28909172f486216a1420e77c3c2720815951a6b4f579161353d9187918791615592565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb890608401602060405180830381865afa15801561378c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d89190615110565b5f6109178383613e6b565b5f610917836001600160a01b038416613e6b565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a184528685209088168552909252938220929392819061382f90613f4e565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff169181018290529192504310156138d1579092509050613933565b6138e2815f0151826020015161398a565b6001600160401b0316815260208101515f600f9190910b1215613920576139118260200151826020015161398a565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b5f61394c8460995f612b1889612594565b80156139555750815b801561396a575082516001600160401b031615155b95945050505050565b5f6109176001600160401b038085169084166155c5565b5f6109176139a1836001600160401b038616615450565b600f0b613f61565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a6f57602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613b51576001600160a01b0385165f908152609f602090815260408083208784529091529020613b299084613bec565b506001600160a01b0385165f908152609d60205260409020613b4b9085613be1565b506118c2565b80516001600160401b03165f036118c2576001600160a01b0385165f908152609f602090815260408083208784529091529020613b8e90846137bb565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613bba90613fcc565b5f036118c2576001600160a01b0385165f908152609d60205260409020610b3e90856137b0565b5f6109178383613fd5565b5f610917836001600160a01b038416613fd5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c8091906155f2565b6001600160a01b0316336001600160a01b031614610fbb5760405163794821ff60e01b815260040160405180910390fd5b365f5f375f5f365f845af43d5f5f3e808015613ccb573d5ff35b3d5ffd5b6001600160a01b0381165f9081526001830160205260408120541515610917565b5f6109178383670de0b6b3a76400006001614021565b5f61091783670de0b6b3a76400008461407a565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613d4990438361415f565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c90606001612333565b5f613db68254600f81810b600160801b909204900b131590565b15613dd457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f613e088254600f81810b600160801b909204900b131590565b15613e2657604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f8181526001830160205260408120548015613f45575f613e8d6001836153fa565b85549091505f90613ea0906001906153fa565b9050818114613eff575f865f018281548110613ebe57613ebe6150db565b905f5260205f200154905080875f018481548110613ede57613ede6150db565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080613f1057613f1061560d565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506109d8565b5f9150506109d8565b5f6109d882670de0b6b3a7640000614173565b5f6001600160401b03821115613fc85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612519565b5090565b5f6109d8825490565b5f81815260018301602052604081205461401a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556109d8565b505f6109d8565b5f5f61402e86868661407a565b9050600183600281111561404457614044615621565b14801561406057505f848061405b5761405b615635565b868809115b1561396a57614070600182615649565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036140b1578382816140a7576140a7615635565b0492505050610917565b8084116140f85760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612519565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b610fa483836001600160401b0384166141b7565b81545f9080156141af576141998461418c6001846153fa565b5f91825260209091200190565b54600160201b90046001600160e01b03166109d4565b509092915050565b8254801561426d575f6141cf8561418c6001856153fa565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156142215760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff80861691160361426b57826142428661418c6001866153fa565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156142f0576142f06142ba565b60405290565b604051601f8201601f191681016001600160401b038111828210171561431e5761431e6142ba565b604052919050565b6001600160a01b038116811461270e575f5ffd5b803563ffffffff81168114610a43575f5ffd5b5f6040828403121561435d575f5ffd5b604080519081016001600160401b038111828210171561437f5761437f6142ba565b604052905080823561439081614326565b815261439e6020840161433a565b60208201525092915050565b5f604082840312156143ba575f5ffd5b610917838361434d565b5f5f5f608084860312156143d6575f5ffd5b83356143e181614326565b92506143f0856020860161434d565b9150606084013561440081614326565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff1690820152606081016109d8565b5f5f6060838503121561444f575f5ffd5b823561445a81614326565b9150614469846020850161434d565b90509250929050565b5f60208284031215614482575f5ffd5b5035919050565b5f60208284031215614499575f5ffd5b813561091781614326565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b828110156144fd576144e78683516144a4565b60409590950194602091909101906001016144d4565b5093949350505050565b602081525f61091760208301846144c2565b5f5f83601f840112614529575f5ffd5b5081356001600160401b0381111561453f575f5ffd5b6020830191508360208260051b8501011115610d43575f5ffd5b5f5f5f6040848603121561456b575f5ffd5b833561457681614326565b925060208401356001600160401b03811115614590575f5ffd5b61459c86828701614519565b9497909650939450505050565b5f6001600160401b038211156145c1576145c16142ba565b5060051b60200190565b5f82601f8301126145da575f5ffd5b81356145ed6145e8826145a9565b6142f6565b8082825260208201915060208360051b86010192508583111561460e575f5ffd5b602085015b8381101561463457803561462681614326565b835260209283019201614613565b5095945050505050565b5f5f5f60808486031215614650575f5ffd5b61465a858561434d565b925060408401356001600160401b03811115614674575f5ffd5b614680868287016145cb565b92505060608401356001600160401b0381111561469b575f5ffd5b6146a7868287016145cb565b9150509250925092565b5f8151808452602084019350602083015f5b828110156144fd5781518652602095860195909101906001016146c3565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561473857603f198786030184526147238583516146b1565b94506020938401939190910190600101614707565b50929695505050505050565b5f5f5f5f60a08587031215614757575f5ffd5b614761868661434d565b935060408501356001600160401b0381111561477b575f5ffd5b614787878288016145cb565b93505060608501356001600160401b038111156147a2575f5ffd5b6147ae878288016145cb565b9250506147bd6080860161433a565b905092959194509250565b5f5f5f5f5f606086880312156147dc575f5ffd5b85356147e781614326565b945060208601356001600160401b03811115614801575f5ffd5b61480d88828901614519565b90955093505060408601356001600160401b0381111561482b575f5ffd5b61483788828901614519565b969995985093965092949392505050565b5f5f60408385031215614859575f5ffd5b823561486481614326565b915060208301356001600160401b0381111561487e575f5ffd5b830160a0818603121561488f575f5ffd5b809150509250929050565b828152604060208201525f610ae760408301846146b1565b5f82601f8301126148c1575f5ffd5b81356148cf6145e8826145a9565b8082825260208201915060208360051b8601019250858311156148f0575f5ffd5b602085015b838110156146345780356001600160401b03811115614912575f5ffd5b86016060818903601f19011215614927575f5ffd5b61492f6142ce565b61493b6020830161433a565b815260408201356001600160401b03811115614955575f5ffd5b6149648a6020838601016145cb565b6020830152506060820135915061497a82614326565b60408101919091528352602092830192016148f5565b5f5f604083850312156149a1575f5ffd5b82356149ac81614326565b915060208301356001600160401b038111156149c6575f5ffd5b6149d2858286016148b2565b9150509250929050565b5f5f604083850312156149ed575f5ffd5b82356149f881614326565b9150602083013561488f81614326565b5f8151808452602084019350602083015f5b828110156144fd57614a5386835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614a1a565b604081525f614a7b60408301856144c2565b828103602084015261396a8185614a08565b602080825282518282018190525f918401906040840190835b81811015614acd5783516001600160a01b0316835260209384019390920191600101614aa6565b509095945050505050565b5f5f5f60408486031215614aea575f5ffd5b83356001600160401b03811115614aff575f5ffd5b614b0b86828701614519565b909450925050602084013561440081614326565b602080825282518282018190525f918401906040840190835b81811015614acd5783516001600160401b0316835260209384019390920191600101614b38565b5f5f5f5f60608587031215614b72575f5ffd5b8435614b7d81614326565b9350614b8b6020860161433a565b925060408501356001600160401b03811115614ba5575f5ffd5b614bb187828801614519565b95989497509550505050565b5f5f60408385031215614bce575f5ffd5b8235614bd981614326565b91506144696020840161433a565b5f60208284031215614bf7575f5ffd5b813560ff81168114610917575f5ffd5b5f5f60608385031215614c18575f5ffd5b614c22848461434d565b9150604083013561488f81614326565b5f60608284031215614c42575f5ffd5b50919050565b5f60208284031215614c58575f5ffd5b81356001600160401b03811115614c6d575f5ffd5b6109d484828501614c32565b5f5f5f60808486031215614c8b575f5ffd5b83356001600160401b03811115614ca0575f5ffd5b614cac868287016145cb565b9350506143f0856020860161434d565b602081525f6109176020830184614a08565b5f5f5f5f60608587031215614ce1575f5ffd5b8435614cec81614326565b935060208501356001600160401b03811115614d06575f5ffd5b614d1287828801614519565b90945092506147bd90506040860161433a565b5f5f60408385031215614d36575f5ffd5b8235614d4181614326565b915060208301356001600160401b03811115614d5b575f5ffd5b8301601f81018513614d6b575f5ffd5b8035614d796145e8826145a9565b8082825260208201915060208360051b850101925087831115614d9a575f5ffd5b602084015b83811015614ebf5780356001600160401b03811115614dbc575f5ffd5b85016080818b03601f19011215614dd1575f5ffd5b614dd96142ce565b614de68b6020840161434d565b815260608201356001600160401b03811115614e00575f5ffd5b614e0f8c6020838601016145cb565b60208301525060808201356001600160401b03811115614e2d575f5ffd5b6020818401019250508a601f830112614e44575f5ffd5b8135614e526145e8826145a9565b8082825260208201915060208360051b86010192508d831115614e73575f5ffd5b6020850194505b82851015614ea95784356001600160401b0381168114614e98575f5ffd5b825260209485019490910190614e7a565b6040840152505084525060209283019201614d9f565b50809450505050509250929050565b5f60208284031215614ede575f5ffd5b81356001600160401b03811115614ef3575f5ffd5b8201601f81018413614f03575f5ffd5b8035614f116145e8826145a9565b8082825260208201915060208360061b850101925086831115614f32575f5ffd5b6020840193505b8284101561407057614f4b878561434d565b8252602082019150604084019350614f39565b5f5f5f60408486031215614f70575f5ffd5b8335614f7b81614326565b925060208401356001600160401b03811115614f95575f5ffd5b8401601f81018613614fa5575f5ffd5b80356001600160401b03811115614fba575f5ffd5b866020828401011115614fcb575f5ffd5b939660209190910195509293505050565b5f5f60408385031215614fed575f5ffd5b8235614ff881614326565b915060208301356001600160401b03811115615012575f5ffd5b6149d285828601614c32565b5f5f5f5f60608587031215615031575f5ffd5b843561503c81614326565b935060208501356001600160401b03811115615056575f5ffd5b615062878288016148b2565b93505060408501356001600160401b03811115614ba5575f5ffd5b5f6020828403121561508d575f5ffd5b6109178261433a565b5f5f8335601e198436030181126150ab575f5ffd5b8301803591506001600160401b038211156150c4575f5ffd5b6020019150600581901b3603821315610d43575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156150ff575f5ffd5b813561ffff81168114610917575f5ffd5b5f60208284031215615120575f5ffd5b81518015158114610917575f5ffd5b604081016109d882846144a4565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff81811683821601908111156109d8576109d861513d565b8183526020830192505f815f5b848110156144fd5763ffffffff6151908361433a565b168652602095860195919091019060010161517a565b6001600160a01b038581168252841660208201526060604082018190525f90614070908301848661516d565b6001600160a01b038616815260c081016151ef60208301876144a4565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f60208284031215615233575f5ffd5b81516001600160401b03811115615248575f5ffd5b8201601f81018413615258575f5ffd5b80516152666145e8826145a9565b8082825260208201915060208360051b850101925086831115615287575f5ffd5b6020840193505b828410156140705783516152a181614326565b82526020938401939091019061528e565b606081016152c082856144a4565b6001600160a01b039290921660409190910152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f610ae76020830184866152d8565b5f5f8335601e19843603018112615328575f5ffd5b8301803591506001600160401b03821115615341575f5ffd5b602001915036819003821315610d43575f5ffd5b6001600160a01b038781168252861660208201526080604082018190525f90615381908301868861516d565b82810360608401526153948185876152d8565b9998505050505050505050565b80516020808301519190811015614c42575f1960209190910360031b1b16919050565b5f8235603e198336030181126153d8575f5ffd5b9190910192915050565b5f600182016153f3576153f361513d565b5060010190565b818103818111156109d8576109d861513d565b6001600160401b0382811682821603908111156109d8576109d861513d565b5f81600f0b60016001607f1b031981036154485761544861513d565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156109d8576109d861513d565b6001600160a01b038716815260e0810161549a60208301886144a4565b60608201959095526001600160a01b039390931660808401526001600160401b0391821660a08401521660c09091015292915050565b5f602082840312156154e0575f5ffd5b5051919050565b6001600160a01b03881681525f60c08201615505602084018a6144a4565b60c060608401528690528660e083015f5b8881101561554657823561552981614326565b6001600160a01b0316825260209283019290910190600101615516565b50838103608085015261555981886146b1565b91505082810360a084015261556f8185876152d8565b9a9950505050505050505050565b5f8161558b5761558b61513d565b505f190190565b608081016155a082866144a4565b6001600160a01b0393909316604082015263ffffffff91909116606090910152919050565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156109d8576109d861513d565b5f60208284031215615602575f5ffd5b815161091781614326565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b808201808211156109d8576109d861513d56fea2646970667358221220eff7eea11020b0cb952b2e22f02345853ee62d6c23b2ee41b88b86fc347efc4364736f6c634300081e0033", } // AllocationManagerABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/AllocationManagerView/binding.go b/pkg/bindings/AllocationManagerView/binding.go index 2e1843c413..d4eaa2eb0a 100644 --- a/pkg/bindings/AllocationManagerView/binding.go +++ b/pkg/bindings/AllocationManagerView/binding.go @@ -45,7 +45,7 @@ type OperatorSet struct { // AllocationManagerViewMetaData contains all meta data concerning the AllocationManagerView contract. var AllocationManagerViewMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_eigenStrategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"_DEALLOCATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_ALLOCATION_CONFIGURATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ALLOCATION_CONFIGURATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEALLOCATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEncumberedMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"futureBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCount\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingSlasher\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRedistributionRecipient\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlasher\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMemberOfOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorRedistributable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRedistributingOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"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\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RedistributionAddressSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"redistributionRecipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlasherMigrated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slasher\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlasherUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slasher\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAVSRegistrar\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRedistributionRecipient\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NonexistentAVSMetadata\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorSetAlreadyMigrated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutOfBounds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SlasherNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesMustBeInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]", - Bin: "0x610100604052348015610010575f5ffd5b5060405161273838038061273883398101604081905261002f91610087565b6001600160a01b039384166080529290911660a05263ffffffff90811660c0521660e0526100dd565b6001600160a01b038116811461006c575f5ffd5b50565b805163ffffffff81168114610082575f5ffd5b919050565b5f5f5f5f6080858703121561009a575f5ffd5b84516100a581610058565b60208601519094506100b681610058565b92506100c46040860161006f565b91506100d26060860161006f565b905092959194509250565b60805160a05160c05160e0516126216101175f395f61041c01525f6102a101525f61053b01525f818161057501526113b001526126215ff3fe608060405234801561000f575f5ffd5b50600436106101f2575f3560e01c80636e875dba11610114578063ba1a84e5116100a9578063db4df76111610079578063db4df76114610536578063dc2af6921461055d578063df5cf72314610570578063f231bd0814610597578063f605ce08146105aa575f5ffd5b8063ba1a84e5146104c6578063c221d8ae146104d9578063d4a3fcce146104ec578063d7794857146104ff575f5ffd5b806394d7d00c116100e457806394d7d00c1461045e578063a9333ec814610471578063b2447af714610484578063b9fbaed114610497575f5ffd5b80636e875dba146103f157806379ae50cd146104045780637bc1ef61146104175780638ce648541461043e575f5ffd5b8063304c10cd1161018a5780634cfd29391161015a5780634cfd29391461037f578063547afb87146103a0578063670d3ba2146103b35780636cfb4481146103c6575f5ffd5b8063304c10cd1461030b57806340120dab1461031e5780634177a87c1461033f5780634a10ffe51461035f575f5ffd5b8063260dc758116101c5578063260dc758146102895780632981eb771461029c5780632b453a9a146102d85780632bab2c4a146102f8575f5ffd5b80630f3df50e146101f657806310e1b9b8146102265780631352c3e61461024657806315fe502814610269575b5f5ffd5b610209610204366004611da6565b6105bd565b6040516001600160a01b0390911681526020015b60405180910390f35b610239610234366004611dc0565b6105fe565b60405161021d9190611e07565b610259610254366004611e3a565b610637565b604051901515815260200161021d565b61027c610277366004611e6e565b6106b2565b60405161021d9190611ede565b610259610297366004611da6565b6107c9565b6102c37f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161021d565b6102eb6102e6366004611f85565b6107fa565b60405161021d9190611ff8565b6102eb610306366004612084565b610810565b610209610319366004611e6e565b6108af565b61033161032c366004612108565b6108de565b60405161021d9291906121a0565b61035261034d366004611da6565b610a57565b60405161021d91906121fd565b61037261036d36600461220f565b610a7b565b60405161021d9190612252565b61039261038d366004611da6565b610b23565b60405190815260200161021d565b6103726103ae36600461229d565b610b45565b6102596103c1366004611e3a565b610bed565b6103d96103d4366004612108565b610c19565b6040516001600160401b03909116815260200161021d565b6103526103ff366004611da6565b610c2e565b61027c610412366004611e6e565b610c3f565b6102c37f000000000000000000000000000000000000000000000000000000000000000081565b61045161044c3660046122df565b610d19565b60405161021d9190612322565b61037261046c366004612334565b610dd5565b6103d961047f366004612108565b610ec1565b610392610492366004611da6565b610ef0565b6104aa6104a5366004611e6e565b610f12565b60408051921515835263ffffffff90911660208301520161021d565b6103926104d4366004611e6e565b610fb3565b6103526104e7366004611e3a565b610fd3565b6102096104fa366004611da6565b610ffc565b61051261050d366004611da6565b611083565b604080516001600160a01b03909316835263ffffffff90911660208301520161021d565b6102097f000000000000000000000000000000000000000000000000000000000000000081565b61025961056b366004611e6e565b611104565b6102097f000000000000000000000000000000000000000000000000000000000000000081565b6102596105a5366004611da6565b611137565b6103d96105b8366004612108565b611156565b5f5f60a65f6105cb85611162565b815260208101919091526040015f20546001600160a01b0316905080156105f257806105f7565b620e16e45b9392505050565b604080516060810182525f808252602082018190529181018290529061062d8561062786611162565b856111c5565b9695505050505050565b6001600160a01b0382165f908152609e6020526040812081908161065a85611162565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806106a85750806020015163ffffffff164311155b9150505b92915050565b6001600160a01b0381165f908152609d60205260408120606091906106d690611331565b90505f816001600160401b038111156106f1576106f1611cdb565b60405190808252806020026020018201604052801561073557816020015b604080518082019091525f808252602082015281526020019060019003908161070f5790505b5090505f5b828110156107c1576001600160a01b0385165f908152609d6020526040902061079c90610767908361133a565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b8282815181106107ae576107ae61238f565b602090810291909101015260010161073a565b509392505050565b60208082015182516001600160a01b03165f9081526098909252604082206106ac9163ffffffff9081169061134516565b60606108088484844361135c565b949350505050565b606061081e8585858561135c565b90505f5b84518110156108a65761084e8582815181106108405761084061238f565b602002602001015187610637565b61089e575f5b845181101561089c575f8383815181106108705761087061238f565b602002602001015182815181106108895761088961238f565b6020908102919091010152600101610854565b505b600101610822565b50949350505050565b6001600160a01b038082165f9081526097602052604081205490911680156108d757806105f7565b5090919050565b6001600160a01b0382165f908152609d60205260408120606091829161090390611331565b90505f816001600160401b0381111561091e5761091e611cdb565b60405190808252806020026020018201604052801561096257816020015b604080518082019091525f808252602082015281526020019060019003908161093c5790505b5090505f826001600160401b0381111561097e5761097e611cdb565b6040519080825280602002602001820160405280156109c757816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161099c5790505b5090505f5b83811015610a4a576001600160a01b0388165f908152609d602052604081206109f990610767908461133a565b905080848381518110610a0e57610a0e61238f565b6020026020010181905250610a2489828a6105fe565b838381518110610a3657610a3661238f565b6020908102919091010152506001016109cc565b5090969095509350505050565b60605f6105f760995f610a6986611162565b81526020019081526020015f20611649565b60605f83516001600160401b03811115610a9757610a97611cdb565b604051908082528060200260200182016040528015610ac0578160200160208202803683370190505b5090505f5b84518110156107c157610af1858281518110610ae357610ae361238f565b602002602001015185610ec1565b828281518110610b0357610b0361238f565b6001600160401b0390921660209283029190910190910152600101610ac5565b5f60a55f610b3084611162565b81526020019081526020015f20549050919050565b60605f82516001600160401b03811115610b6157610b61611cdb565b604051908082528060200260200182016040528015610b8a578160200160208202803683370190505b5090505f5b83518110156107c157610bbb85858381518110610bae57610bae61238f565b6020026020010151610ec1565b828281518110610bcd57610bcd61238f565b6001600160401b0390921660209283029190910190910152600101610b8f565b5f6105f783609a5f610bfe86611162565b81526020019081526020015f2061165590919063ffffffff16565b5f5f610c258484611676565b95945050505050565b60606106ac609a5f610a6985611162565b6001600160a01b0381165f908152609c6020526040812060609190610c6390611331565b90505f816001600160401b03811115610c7e57610c7e611cdb565b604051908082528060200260200182016040528015610cc257816020015b604080518082019091525f8082526020820152815260200190600190039081610c9c5790505b5090505f5b828110156107c1576001600160a01b0385165f908152609c60205260409020610cf490610767908361133a565b828281518110610d0657610d0661238f565b6020908102919091010152600101610cc7565b60605f84516001600160401b03811115610d3557610d35611cdb565b604051908082528060200260200182016040528015610d7e57816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181610d535790505b5090505f5b85518110156108a657610db0868281518110610da157610da161238f565b602002602001015186866105fe565b828281518110610dc257610dc261238f565b6020908102919091010152600101610d83565b60605f83516001600160401b03811115610df157610df1611cdb565b604051908082528060200260200182016040528015610e1a578160200160208202803683370190505b5090505f5b84518110156108a6576001600160a01b0386165f90815260a1602052604081208651610e8f92879291899086908110610e5a57610e5a61238f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206117e590919063ffffffff16565b828281518110610ea157610ea161238f565b6001600160401b0390921660209283029190910190910152600101610e1f565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206105f7906117f9565b5f6106ac609a5f610f0085611162565b81526020019081526020015f20611331565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff64010000000084041615159584018690526501000000000083048216948401949094526901000000000000000000909104166060820181905284939192919015801590610f9a5750826060015163ffffffff164310155b15610fa9575050604081015160015b9590945092505050565b6001600160a01b0381165f9081526098602052604081206106ac90611331565b6001600160a01b0382165f908152609f60205260408120606091906106a89082610a6986611162565b5f5f60a75f61100a85611162565b815260208082019290925260409081015f20815160608101835281546001600160a01b0390811680835260019093015490811694820194909452600160a01b90930463ffffffff16918301829052919250158015906110735750816040015163ffffffff164310155b156105f757506020015192915050565b5f5f5f5f5f60a75f61109488611162565b815260208082019290925260409081015f20815160608101835281546001600160a01b03908116825260019092015491821693810193909352600160a01b900463ffffffff169082018190529091504310156110f95780602001519250806040015191505b509094909350915050565b5f5f61110f83610c3f565b90505f61111b846106b2565b9050611127848361180c565b806108085750610808848261180c565b5f620e16e4611145836105bd565b6001600160a01b0316141592915050565b5f5f6108a68484611676565b5f815f0151826020015163ffffffff166040516020016111ad92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526106ac906123a3565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a1845286852090881685529092529382209293928190611225906117f9565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff169181018290529192504310156112c7579092509050611329565b6112d8815f01518260200151611884565b6001600160401b0316815260208101515f600f9190910b12156113165761130782602001518260200151611884565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b5f6106ac825490565b5f6105f783836118a3565b5f81815260018301602052604081205415156105f7565b606083516001600160401b0381111561137757611377611cdb565b6040519080825280602002602001820160405280156113aa57816020015b60608152602001906001900390816113955790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b81526004016113fc9291906123c9565b5f60405180830381865afa158015611416573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261143d91908101906123ed565b90505f5b855181101561163f575f86828151811061145d5761145d61238f565b6020026020010151905085516001600160401b0381111561148057611480611cdb565b6040519080825280602002602001820160405280156114a9578160200160208202803683370190505b508483815181106114bc576114bc61238f565b60209081029190910101525f5b8651811015611635575f8782815181106114e5576114e561238f565b6020908102919091018101516001600160a01b038086165f90815260a1845260408082209284168252919093528220909250611520906117f9565b9050806001600160401b03165f0361153957505061162d565b5f611545858d856105fe565b90508863ffffffff16816040015163ffffffff161115801561156d57505f8160200151600f0b125b1561158f57611583815f01518260200151611884565b6001600160401b031681525b80515f906115aa906001600160401b039081169085166118c9565b90506115f1818989815181106115c2576115c261238f565b602002602001015187815181106115db576115db61238f565b60200260200101516118dd90919063ffffffff16565b8988815181106116035761160361238f565b6020026020010151868151811061161c5761161c61238f565b602002602001018181525050505050505b6001016114c9565b5050600101611441565b5050949350505050565b60605f6105f7836118f1565b6001600160a01b0381165f90815260018301602052604081205415156105f7565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b818110156117a1576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120611709908361194a565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff169181018290529192504310156117845750506117a1565b611792868260200151611884565b955050508060010190506116d1565b506001600160a01b038086165f90815260a16020908152604080832093881683529290522083906117d1906117f9565b6117db919061250d565b9150509250929050565b5f6105f78383670de0b6b3a76400006119b9565b5f6106ac82670de0b6b3a7640000611a0f565b5f805b825181101561187b5761183b8484838151811061182e5761182e61238f565b6020026020010151610637565b801561186457506118648382815181106118575761185761238f565b6020026020010151611137565b156118735760019150506106ac565b60010161180f565b505f9392505050565b5f6105f761189b836001600160401b03861661252c565b600f0b611a47565b5f825f0182815481106118b8576118b861238f565b905f5260205f200154905092915050565b5f6105f783670de0b6b3a764000084611ab7565b5f6105f78383670de0b6b3a7640000611ab7565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561193e57602002820191905f5260205f20905b81548152602001906001019080831161192a575b50505050509050919050565b5f5f61196c61195884611b9c565b85546119679190600f0b61256b565b611c05565b8454909150600160801b9004600f90810b9082900b1261199f57604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b82545f90816119ca86868385611c6e565b90508015611a05576119ee866119e1600184612592565b5f91825260209091200190565b5464010000000090046001600160e01b031661062d565b5091949350505050565b81545f908015611a3f57611a28846119e1600184612592565b5464010000000090046001600160e01b03166106a8565b509092915050565b5f6001600160401b03821115611ab35760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084015b60405180910390fd5b5090565b5f80805f19858709858702925082811083820303915050805f03611aee57838281611ae457611ae46125a5565b04925050506105f7565b808411611b355760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611aaa565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160ff1b03821115611ab35760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611aaa565b80600f81900b8114611c695760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401611aaa565b919050565b5f5b818310156107c1575f611c838484611cc1565b5f8781526020902090915063ffffffff86169082015463ffffffff161115611cad57809250611cbb565b611cb88160016125b9565b93505b50611c70565b5f611ccf60028484186125cc565b6105f7908484166125b9565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715611d1757611d17611cdb565b604052919050565b6001600160a01b0381168114611d33575f5ffd5b50565b803563ffffffff81168114611c69575f5ffd5b5f60408284031215611d59575f5ffd5b604080519081016001600160401b0381118282101715611d7b57611d7b611cdb565b6040529050808235611d8c81611d1f565b8152611d9a60208401611d36565b60208201525092915050565b5f60408284031215611db6575f5ffd5b6105f78383611d49565b5f5f5f60808486031215611dd2575f5ffd5b8335611ddd81611d1f565b9250611dec8560208601611d49565b91506060840135611dfc81611d1f565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff1690820152606081016106ac565b5f5f60608385031215611e4b575f5ffd5b8235611e5681611d1f565b9150611e658460208501611d49565b90509250929050565b5f60208284031215611e7e575f5ffd5b81356105f781611d1f565b5f8151808452602084019350602083015f5b82811015611ed457815180516001600160a01b0316875260209081015163ffffffff168188015260409096019590910190600101611e9b565b5093949350505050565b602081525f6105f76020830184611e89565b5f6001600160401b03821115611f0857611f08611cdb565b5060051b60200190565b5f82601f830112611f21575f5ffd5b8135611f34611f2f82611ef0565b611cef565b8082825260208201915060208360051b860101925085831115611f55575f5ffd5b602085015b83811015611f7b578035611f6d81611d1f565b835260209283019201611f5a565b5095945050505050565b5f5f5f60808486031215611f97575f5ffd5b611fa18585611d49565b925060408401356001600160401b03811115611fbb575f5ffd5b611fc786828701611f12565b92505060608401356001600160401b03811115611fe2575f5ffd5b611fee86828701611f12565b9150509250925092565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561207857868503603f19018452815180518087526020918201918701905f5b8181101561205f578351835260209384019390920191600101612041565b509096505050602093840193919091019060010161201e565b50929695505050505050565b5f5f5f5f60a08587031215612097575f5ffd5b6120a18686611d49565b935060408501356001600160401b038111156120bb575f5ffd5b6120c787828801611f12565b93505060608501356001600160401b038111156120e2575f5ffd5b6120ee87828801611f12565b9250506120fd60808601611d36565b905092959194509250565b5f5f60408385031215612119575f5ffd5b823561212481611d1f565b9150602083013561213481611d1f565b809150509250929050565b5f8151808452602084019350602083015f5b82811015611ed45761218a86835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101612151565b604081525f6121b26040830185611e89565b8281036020840152610c25818561213f565b5f8151808452602084019350602083015f5b82811015611ed45781516001600160a01b03168652602095860195909101906001016121d6565b602081525f6105f760208301846121c4565b5f5f60408385031215612220575f5ffd5b82356001600160401b03811115612235575f5ffd5b61224185828601611f12565b925050602083013561213481611d1f565b602080825282518282018190525f918401906040840190835b818110156122925783516001600160401b031683526020938401939092019160010161226b565b509095945050505050565b5f5f604083850312156122ae575f5ffd5b82356122b981611d1f565b915060208301356001600160401b038111156122d3575f5ffd5b6117db85828601611f12565b5f5f5f608084860312156122f1575f5ffd5b83356001600160401b03811115612306575f5ffd5b61231286828701611f12565b935050611dec8560208601611d49565b602081525f6105f7602083018461213f565b5f5f5f60608486031215612346575f5ffd5b833561235181611d1f565b925060208401356001600160401b0381111561236b575f5ffd5b61237786828701611f12565b92505061238660408501611d36565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b805160208083015191908110156123c3575f198160200360031b1b821691505b50919050565b604081525f6123db60408301856121c4565b8281036020840152610c2581856121c4565b5f602082840312156123fd575f5ffd5b81516001600160401b03811115612412575f5ffd5b8201601f81018413612422575f5ffd5b8051612430611f2f82611ef0565b8082825260208201915060208360051b850101925086831115612451575f5ffd5b602084015b838110156124ee5780516001600160401b03811115612473575f5ffd5b8501603f81018913612483575f5ffd5b6020810151612494611f2f82611ef0565b808282526020820191506020808460051b8601010192508b8311156124b7575f5ffd5b6040840193505b828410156124d95783518252602093840193909101906124be565b86525050602093840193919091019050612456565b509695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0382811682821603908111156106ac576106ac6124f9565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff19821217156106ac576106ac6124f9565b8082018281125f83128015821682158216171561258a5761258a6124f9565b505092915050565b818103818111156106ac576106ac6124f9565b634e487b7160e01b5f52601260045260245ffd5b808201808211156106ac576106ac6124f9565b5f826125e657634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220a04078e60a2daa60eb4fbf5c07848fe21fd17d41118a01119bd700464e5f763b64736f6c634300081e0033", + Bin: "0x610100604052348015610010575f5ffd5b5060405161273838038061273883398101604081905261002f91610087565b6001600160a01b039384166080529290911660a05263ffffffff90811660c0521660e0526100dd565b6001600160a01b038116811461006c575f5ffd5b50565b805163ffffffff81168114610082575f5ffd5b919050565b5f5f5f5f6080858703121561009a575f5ffd5b84516100a581610058565b60208601519094506100b681610058565b92506100c46040860161006f565b91506100d26060860161006f565b905092959194509250565b60805160a05160c05160e0516126216101175f395f61041c01525f6102a101525f61053b01525f818161057501526113b001526126215ff3fe608060405234801561000f575f5ffd5b50600436106101f2575f3560e01c80636e875dba11610114578063ba1a84e5116100a9578063db4df76111610079578063db4df76114610536578063dc2af6921461055d578063df5cf72314610570578063f231bd0814610597578063f605ce08146105aa575f5ffd5b8063ba1a84e5146104c6578063c221d8ae146104d9578063d4a3fcce146104ec578063d7794857146104ff575f5ffd5b806394d7d00c116100e457806394d7d00c1461045e578063a9333ec814610471578063b2447af714610484578063b9fbaed114610497575f5ffd5b80636e875dba146103f157806379ae50cd146104045780637bc1ef61146104175780638ce648541461043e575f5ffd5b8063304c10cd1161018a5780634cfd29391161015a5780634cfd29391461037f578063547afb87146103a0578063670d3ba2146103b35780636cfb4481146103c6575f5ffd5b8063304c10cd1461030b57806340120dab1461031e5780634177a87c1461033f5780634a10ffe51461035f575f5ffd5b8063260dc758116101c5578063260dc758146102895780632981eb771461029c5780632b453a9a146102d85780632bab2c4a146102f8575f5ffd5b80630f3df50e146101f657806310e1b9b8146102265780631352c3e61461024657806315fe502814610269575b5f5ffd5b610209610204366004611da6565b6105bd565b6040516001600160a01b0390911681526020015b60405180910390f35b610239610234366004611dc0565b6105fe565b60405161021d9190611e07565b610259610254366004611e3a565b610637565b604051901515815260200161021d565b61027c610277366004611e6e565b6106b2565b60405161021d9190611ede565b610259610297366004611da6565b6107c9565b6102c37f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161021d565b6102eb6102e6366004611f85565b6107fa565b60405161021d9190611ff8565b6102eb610306366004612084565b610810565b610209610319366004611e6e565b6108af565b61033161032c366004612108565b6108de565b60405161021d9291906121a0565b61035261034d366004611da6565b610a57565b60405161021d91906121fd565b61037261036d36600461220f565b610a7b565b60405161021d9190612252565b61039261038d366004611da6565b610b23565b60405190815260200161021d565b6103726103ae36600461229d565b610b45565b6102596103c1366004611e3a565b610bed565b6103d96103d4366004612108565b610c19565b6040516001600160401b03909116815260200161021d565b6103526103ff366004611da6565b610c2e565b61027c610412366004611e6e565b610c3f565b6102c37f000000000000000000000000000000000000000000000000000000000000000081565b61045161044c3660046122df565b610d19565b60405161021d9190612322565b61037261046c366004612334565b610dd5565b6103d961047f366004612108565b610ec1565b610392610492366004611da6565b610ef0565b6104aa6104a5366004611e6e565b610f12565b60408051921515835263ffffffff90911660208301520161021d565b6103926104d4366004611e6e565b610fb3565b6103526104e7366004611e3a565b610fd3565b6102096104fa366004611da6565b610ffc565b61051261050d366004611da6565b611083565b604080516001600160a01b03909316835263ffffffff90911660208301520161021d565b6102097f000000000000000000000000000000000000000000000000000000000000000081565b61025961056b366004611e6e565b611104565b6102097f000000000000000000000000000000000000000000000000000000000000000081565b6102596105a5366004611da6565b611137565b6103d96105b8366004612108565b611156565b5f5f60a65f6105cb85611162565b815260208101919091526040015f20546001600160a01b0316905080156105f257806105f7565b620e16e45b9392505050565b604080516060810182525f808252602082018190529181018290529061062d8561062786611162565b856111c5565b9695505050505050565b6001600160a01b0382165f908152609e6020526040812081908161065a85611162565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806106a85750806020015163ffffffff164311155b9150505b92915050565b6001600160a01b0381165f908152609d60205260408120606091906106d690611331565b90505f816001600160401b038111156106f1576106f1611cdb565b60405190808252806020026020018201604052801561073557816020015b604080518082019091525f808252602082015281526020019060019003908161070f5790505b5090505f5b828110156107c1576001600160a01b0385165f908152609d6020526040902061079c90610767908361133a565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b8282815181106107ae576107ae61238f565b602090810291909101015260010161073a565b509392505050565b60208082015182516001600160a01b03165f9081526098909252604082206106ac9163ffffffff9081169061134516565b60606108088484844361135c565b949350505050565b606061081e8585858561135c565b90505f5b84518110156108a65761084e8582815181106108405761084061238f565b602002602001015187610637565b61089e575f5b845181101561089c575f8383815181106108705761087061238f565b602002602001015182815181106108895761088961238f565b6020908102919091010152600101610854565b505b600101610822565b50949350505050565b6001600160a01b038082165f9081526097602052604081205490911680156108d757806105f7565b5090919050565b6001600160a01b0382165f908152609d60205260408120606091829161090390611331565b90505f816001600160401b0381111561091e5761091e611cdb565b60405190808252806020026020018201604052801561096257816020015b604080518082019091525f808252602082015281526020019060019003908161093c5790505b5090505f826001600160401b0381111561097e5761097e611cdb565b6040519080825280602002602001820160405280156109c757816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161099c5790505b5090505f5b83811015610a4a576001600160a01b0388165f908152609d602052604081206109f990610767908461133a565b905080848381518110610a0e57610a0e61238f565b6020026020010181905250610a2489828a6105fe565b838381518110610a3657610a3661238f565b6020908102919091010152506001016109cc565b5090969095509350505050565b60605f6105f760995f610a6986611162565b81526020019081526020015f20611649565b60605f83516001600160401b03811115610a9757610a97611cdb565b604051908082528060200260200182016040528015610ac0578160200160208202803683370190505b5090505f5b84518110156107c157610af1858281518110610ae357610ae361238f565b602002602001015185610ec1565b828281518110610b0357610b0361238f565b6001600160401b0390921660209283029190910190910152600101610ac5565b5f60a55f610b3084611162565b81526020019081526020015f20549050919050565b60605f82516001600160401b03811115610b6157610b61611cdb565b604051908082528060200260200182016040528015610b8a578160200160208202803683370190505b5090505f5b83518110156107c157610bbb85858381518110610bae57610bae61238f565b6020026020010151610ec1565b828281518110610bcd57610bcd61238f565b6001600160401b0390921660209283029190910190910152600101610b8f565b5f6105f783609a5f610bfe86611162565b81526020019081526020015f2061165590919063ffffffff16565b5f5f610c258484611676565b95945050505050565b60606106ac609a5f610a6985611162565b6001600160a01b0381165f908152609c6020526040812060609190610c6390611331565b90505f816001600160401b03811115610c7e57610c7e611cdb565b604051908082528060200260200182016040528015610cc257816020015b604080518082019091525f8082526020820152815260200190600190039081610c9c5790505b5090505f5b828110156107c1576001600160a01b0385165f908152609c60205260409020610cf490610767908361133a565b828281518110610d0657610d0661238f565b6020908102919091010152600101610cc7565b60605f84516001600160401b03811115610d3557610d35611cdb565b604051908082528060200260200182016040528015610d7e57816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181610d535790505b5090505f5b85518110156108a657610db0868281518110610da157610da161238f565b602002602001015186866105fe565b828281518110610dc257610dc261238f565b6020908102919091010152600101610d83565b60605f83516001600160401b03811115610df157610df1611cdb565b604051908082528060200260200182016040528015610e1a578160200160208202803683370190505b5090505f5b84518110156108a6576001600160a01b0386165f90815260a1602052604081208651610e8f92879291899086908110610e5a57610e5a61238f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206117e590919063ffffffff16565b828281518110610ea157610ea161238f565b6001600160401b0390921660209283029190910190910152600101610e1f565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206105f7906117f9565b5f6106ac609a5f610f0085611162565b81526020019081526020015f20611331565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff64010000000084041615159584018690526501000000000083048216948401949094526901000000000000000000909104166060820181905284939192919015801590610f9a5750826060015163ffffffff164310155b15610fa9575050604081015160015b9590945092505050565b6001600160a01b0381165f9081526098602052604081206106ac90611331565b6001600160a01b0382165f908152609f60205260408120606091906106a89082610a6986611162565b5f5f60a75f61100a85611162565b815260208082019290925260409081015f20815160608101835281546001600160a01b0390811680835260019093015490811694820194909452600160a01b90930463ffffffff16918301829052919250158015906110735750816040015163ffffffff164310155b156105f757506020015192915050565b5f5f5f5f5f60a75f61109488611162565b815260208082019290925260409081015f20815160608101835281546001600160a01b03908116825260019092015491821693810193909352600160a01b900463ffffffff169082018190529091504310156110f95780602001519250806040015191505b509094909350915050565b5f5f61110f83610c3f565b90505f61111b846106b2565b9050611127848361180c565b806108085750610808848261180c565b5f620e16e4611145836105bd565b6001600160a01b0316141592915050565b5f5f6108a68484611676565b5f815f0151826020015163ffffffff166040516020016111ad92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526106ac906123a3565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a1845286852090881685529092529382209293928190611225906117f9565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff169181018290529192504310156112c7579092509050611329565b6112d8815f01518260200151611884565b6001600160401b0316815260208101515f600f9190910b12156113165761130782602001518260200151611884565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b5f6106ac825490565b5f6105f783836118a3565b5f81815260018301602052604081205415156105f7565b606083516001600160401b0381111561137757611377611cdb565b6040519080825280602002602001820160405280156113aa57816020015b60608152602001906001900390816113955790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b81526004016113fc9291906123c9565b5f60405180830381865afa158015611416573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261143d91908101906123ed565b90505f5b855181101561163f575f86828151811061145d5761145d61238f565b6020026020010151905085516001600160401b0381111561148057611480611cdb565b6040519080825280602002602001820160405280156114a9578160200160208202803683370190505b508483815181106114bc576114bc61238f565b60209081029190910101525f5b8651811015611635575f8782815181106114e5576114e561238f565b6020908102919091018101516001600160a01b038086165f90815260a1845260408082209284168252919093528220909250611520906117f9565b9050806001600160401b03165f0361153957505061162d565b5f611545858d856105fe565b90508863ffffffff16816040015163ffffffff161115801561156d57505f8160200151600f0b125b1561158f57611583815f01518260200151611884565b6001600160401b031681525b80515f906115aa906001600160401b039081169085166118c9565b90506115f1818989815181106115c2576115c261238f565b602002602001015187815181106115db576115db61238f565b60200260200101516118dd90919063ffffffff16565b8988815181106116035761160361238f565b6020026020010151868151811061161c5761161c61238f565b602002602001018181525050505050505b6001016114c9565b5050600101611441565b5050949350505050565b60605f6105f7836118f1565b6001600160a01b0381165f90815260018301602052604081205415156105f7565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b818110156117a1576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120611709908361194a565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff169181018290529192504310156117845750506117a1565b611792868260200151611884565b955050508060010190506116d1565b506001600160a01b038086165f90815260a16020908152604080832093881683529290522083906117d1906117f9565b6117db919061250d565b9150509250929050565b5f6105f78383670de0b6b3a76400006119b9565b5f6106ac82670de0b6b3a7640000611a0f565b5f805b825181101561187b5761183b8484838151811061182e5761182e61238f565b6020026020010151610637565b801561186457506118648382815181106118575761185761238f565b6020026020010151611137565b156118735760019150506106ac565b60010161180f565b505f9392505050565b5f6105f761189b836001600160401b03861661252c565b600f0b611a47565b5f825f0182815481106118b8576118b861238f565b905f5260205f200154905092915050565b5f6105f783670de0b6b3a764000084611ab7565b5f6105f78383670de0b6b3a7640000611ab7565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561193e57602002820191905f5260205f20905b81548152602001906001019080831161192a575b50505050509050919050565b5f5f61196c61195884611b9c565b85546119679190600f0b61256b565b611c05565b8454909150600160801b9004600f90810b9082900b1261199f57604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b82545f90816119ca86868385611c6e565b90508015611a05576119ee866119e1600184612592565b5f91825260209091200190565b5464010000000090046001600160e01b031661062d565b5091949350505050565b81545f908015611a3f57611a28846119e1600184612592565b5464010000000090046001600160e01b03166106a8565b509092915050565b5f6001600160401b03821115611ab35760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084015b60405180910390fd5b5090565b5f80805f19858709858702925082811083820303915050805f03611aee57838281611ae457611ae46125a5565b04925050506105f7565b808411611b355760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611aaa565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160ff1b03821115611ab35760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611aaa565b80600f81900b8114611c695760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401611aaa565b919050565b5f5b818310156107c1575f611c838484611cc1565b5f8781526020902090915063ffffffff86169082015463ffffffff161115611cad57809250611cbb565b611cb88160016125b9565b93505b50611c70565b5f611ccf60028484186125cc565b6105f7908484166125b9565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715611d1757611d17611cdb565b604052919050565b6001600160a01b0381168114611d33575f5ffd5b50565b803563ffffffff81168114611c69575f5ffd5b5f60408284031215611d59575f5ffd5b604080519081016001600160401b0381118282101715611d7b57611d7b611cdb565b6040529050808235611d8c81611d1f565b8152611d9a60208401611d36565b60208201525092915050565b5f60408284031215611db6575f5ffd5b6105f78383611d49565b5f5f5f60808486031215611dd2575f5ffd5b8335611ddd81611d1f565b9250611dec8560208601611d49565b91506060840135611dfc81611d1f565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff1690820152606081016106ac565b5f5f60608385031215611e4b575f5ffd5b8235611e5681611d1f565b9150611e658460208501611d49565b90509250929050565b5f60208284031215611e7e575f5ffd5b81356105f781611d1f565b5f8151808452602084019350602083015f5b82811015611ed457815180516001600160a01b0316875260209081015163ffffffff168188015260409096019590910190600101611e9b565b5093949350505050565b602081525f6105f76020830184611e89565b5f6001600160401b03821115611f0857611f08611cdb565b5060051b60200190565b5f82601f830112611f21575f5ffd5b8135611f34611f2f82611ef0565b611cef565b8082825260208201915060208360051b860101925085831115611f55575f5ffd5b602085015b83811015611f7b578035611f6d81611d1f565b835260209283019201611f5a565b5095945050505050565b5f5f5f60808486031215611f97575f5ffd5b611fa18585611d49565b925060408401356001600160401b03811115611fbb575f5ffd5b611fc786828701611f12565b92505060608401356001600160401b03811115611fe2575f5ffd5b611fee86828701611f12565b9150509250925092565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561207857868503603f19018452815180518087526020918201918701905f5b8181101561205f578351835260209384019390920191600101612041565b509096505050602093840193919091019060010161201e565b50929695505050505050565b5f5f5f5f60a08587031215612097575f5ffd5b6120a18686611d49565b935060408501356001600160401b038111156120bb575f5ffd5b6120c787828801611f12565b93505060608501356001600160401b038111156120e2575f5ffd5b6120ee87828801611f12565b9250506120fd60808601611d36565b905092959194509250565b5f5f60408385031215612119575f5ffd5b823561212481611d1f565b9150602083013561213481611d1f565b809150509250929050565b5f8151808452602084019350602083015f5b82811015611ed45761218a86835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101612151565b604081525f6121b26040830185611e89565b8281036020840152610c25818561213f565b5f8151808452602084019350602083015f5b82811015611ed45781516001600160a01b03168652602095860195909101906001016121d6565b602081525f6105f760208301846121c4565b5f5f60408385031215612220575f5ffd5b82356001600160401b03811115612235575f5ffd5b61224185828601611f12565b925050602083013561213481611d1f565b602080825282518282018190525f918401906040840190835b818110156122925783516001600160401b031683526020938401939092019160010161226b565b509095945050505050565b5f5f604083850312156122ae575f5ffd5b82356122b981611d1f565b915060208301356001600160401b038111156122d3575f5ffd5b6117db85828601611f12565b5f5f5f608084860312156122f1575f5ffd5b83356001600160401b03811115612306575f5ffd5b61231286828701611f12565b935050611dec8560208601611d49565b602081525f6105f7602083018461213f565b5f5f5f60608486031215612346575f5ffd5b833561235181611d1f565b925060208401356001600160401b0381111561236b575f5ffd5b61237786828701611f12565b92505061238660408501611d36565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b805160208083015191908110156123c3575f198160200360031b1b821691505b50919050565b604081525f6123db60408301856121c4565b8281036020840152610c2581856121c4565b5f602082840312156123fd575f5ffd5b81516001600160401b03811115612412575f5ffd5b8201601f81018413612422575f5ffd5b8051612430611f2f82611ef0565b8082825260208201915060208360051b850101925086831115612451575f5ffd5b602084015b838110156124ee5780516001600160401b03811115612473575f5ffd5b8501603f81018913612483575f5ffd5b6020810151612494611f2f82611ef0565b808282526020820191506020808460051b8601010192508b8311156124b7575f5ffd5b6040840193505b828410156124d95783518252602093840193909101906124be565b86525050602093840193919091019050612456565b509695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0382811682821603908111156106ac576106ac6124f9565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff19821217156106ac576106ac6124f9565b8082018281125f83128015821682158216171561258a5761258a6124f9565b505092915050565b818103818111156106ac576106ac6124f9565b634e487b7160e01b5f52601260045260245ffd5b808201808211156106ac576106ac6124f9565b5f826125e657634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220a58a72c3a97e44c4d5be26f7a6b6d441e019f58b37b1d45cb9b6f916dc89b4ff64736f6c634300081e0033", } // AllocationManagerViewABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/CrossChainRegistry/binding.go b/pkg/bindings/CrossChainRegistry/binding.go index d0bf155f75..c8cb6eda46 100644 --- a/pkg/bindings/CrossChainRegistry/binding.go +++ b/pkg/bindings/CrossChainRegistry/binding.go @@ -44,7 +44,7 @@ type OperatorSet struct { // CrossChainRegistryMetaData contains all meta data concerning the CrossChainRegistry contract. var CrossChainRegistryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_keyRegistrar\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addChainIDsToWhitelist\",\"inputs\":[{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"operatorTableUpdaters\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getActiveGenerationReservationCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getActiveGenerationReservations\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getActiveGenerationReservationsByRange\",\"inputs\":[{\"name\":\"startIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"endIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetConfig\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSupportedChains\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTableUpdateCadence\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasActiveGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialTableUpdateCadence\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"keyRegistrar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"}],\"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\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeChainIDsFromWhitelist\",\"inputs\":[{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorSetConfig\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setTableUpdateCadence\",\"inputs\":[{\"name\":\"tableUpdateCadence\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"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\":\"event\",\"name\":\"ChainIDAddedToWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorTableUpdater\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChainIDRemovedFromWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetConfigRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetConfigSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorTableCalculatorRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorTableCalculatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIOperatorTableCalculator\"}],\"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\":\"TableUpdateCadenceSet\",\"inputs\":[{\"name\":\"tableUpdateCadence\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"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\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIDAlreadyWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIDNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EmptyChainIDsArray\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GenerationReservationAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GenerationReservationDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidChainId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEndIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRange\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStalenessPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTableUpdateCadence\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyTypeNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]}]", - Bin: "0x610100604052348015610010575f5ffd5b506040516125b73803806125b783398101604081905261002f9161015b565b818484836001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805291821660a052811660c0521660e05261007f610088565b505050506101b7565b5f54610100900460ff16156100f35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610142575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610158575f5ffd5b50565b5f5f5f5f6080858703121561016e575f5ffd5b845161017981610144565b602086015190945061018a81610144565b604086015190935061019b81610144565b60608601519092506101ac81610144565b939692955090935050565b60805160a05160c05160e05161238e6102295f395f81816102db0152611a3101525f818161027c015281816109dc015261107001525f81816103db01528181610762015281816108d501528181610b6b0152610fc701525f818161036d015281816116590152611928015261238e5ff3fe608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c8063715018a6116100fe578063ca8aa7c71161009e578063d9a6729e1161006e578063d9a6729e14610438578063dfbd9dfd1461044b578063f2fde38b1461045e578063fabc1cbc14610471575f5ffd5b8063ca8aa7c7146103d6578063d09b978b146103fd578063d504491114610412578063d6db9e2514610425575f5ffd5b80638da5cb5b116100d95780638da5cb5b1461038f578063ac505f4b146103a0578063b186a60e146103b8578063c4bffe2b146103c0575f5ffd5b8063715018a61461034d57806375e4b53914610355578063886f119514610368575f5ffd5b80633ec45c7e11610169578063595c6a6711610144578063595c6a67146102fd5780635ac86ab7146103055780635c975abb146103285780636c55a37f1461033a575f5ffd5b80633ec45c7e1461027757806341ee6d0e146102b65780634657e26a146102d6575f5ffd5b80631ca9142a116101a45780631ca9142a1461020557806321fa7fdc14610218578063277e1e621461024157806336b200de14610254575f5ffd5b806304e98be3146101ca5780630f19aaef146101df578063136439dd146101f2575b5f5ffd5b6101dd6101d8366004611c81565b610484565b005b6101dd6101ed366004611d19565b6105c8565b6101dd610200366004611d55565b6106ee565b6101dd610213366004611d82565b610728565b61022b610226366004611e5b565b61083b565b6040516102389190611e93565b60405180910390f35b6101dd61024f366004611ea1565b61089b565b610267610262366004611e5b565b6109bc565b6040519015158152602001610238565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610238565b6102c96102c4366004611ed4565b6109d7565b6040516102389190611f1c565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b6101dd610b1e565b610267610313366004611f2e565b606654600160ff9092169190911b9081161490565b6066545b604051908152602001610238565b6101dd610348366004611ed4565b610b32565b6101dd610d38565b61029e610363366004611e5b565b610d49565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b031661029e565b609e5460405163ffffffff9091168152602001610238565b61032c610d75565b6103c8610d85565b604051610238929190611f4e565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b610405610e9b565b6040516102389190611fd7565b6101dd610420366004612024565b610f8e565b6101dd610433366004612068565b6111b7565b610405610446366004612081565b6111cb565b6101dd6104593660046120a1565b611315565b6101dd61046c3660046120e0565b6113bb565b6101dd61047f366004611d55565b611431565b61048c61149e565b6003610497816114f8565b8382146104b75760405163512509d360e11b815260040160405180910390fd5b5f5b848110156105c0575f8686838181106104d4576104d46120fb565b905060200201359050805f036104fd57604051633d23e4d160e11b815260040160405180910390fd5b61053181868685818110610513576105136120fb565b905060200201602081019061052891906120e0565b609b9190611523565b61054e576040516324bf631b60e11b815260040160405180910390fd5b7f7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff6281868685818110610582576105826120fb565b905060200201602081019061059791906120e0565b604080519283526001600160a01b0390911660208301520160405180910390a1506001016104b9565b505050505050565b5f54610100900460ff16158080156105e657505f54600160ff909116105b806105ff5750303b1580156105ff57505f5460ff166001145b6106675760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610688575f805461ff0019166101001790555b61069184611542565b61069a83611593565b6106a382611607565b80156106e8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6106f6611644565b606654818116811461071b5760405163c61dca5d60e01b815260040160405180910390fd5b61072482611607565b5050565b6001610733816114f8565b61074060208401846120e0565b610749816116e7565b6040516304c1b8eb60e31b815284906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610797908490600401612140565b602060405180830381865afa1580156107b2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d6919061214e565b6107f357604051631fb1705560e21b815260040160405180910390fd5b8461080661026236839003830183611e5b565b61082357604051634d2baea960e11b815260040160405180910390fd5b6105c061083536889003880188611e5b565b8661170d565b604080518082019091525f8082526020820152609a5f61085a84611787565b815260208082019290925260409081015f208151808301909252546001600160a01b0381168252600160a01b900463ffffffff169181019190915292915050565b60026108a6816114f8565b6108b360208401846120e0565b6108bc816116e7565b6040516304c1b8eb60e31b815284906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc7589061090a908490600401612140565b602060405180830381865afa158015610925573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610949919061214e565b61096657604051631fb1705560e21b815260040160405180910390fd5b8461097961026236839003830183611e5b565b61099657604051634d2baea960e11b815260040160405180910390fd5b6105c06109a836889003880188611e5b565b6109b736889003880188611e5b565b6117ea565b5f6109d16109c983611787565b6097906118b3565b92915050565b6060817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637cffe48c846040518263ffffffff1660e01b8152600401610a269190612140565b602060405180830381865afa158015610a41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a65919061216d565b610a7761022636869003860186611e5b565b610a8961036336879003870187611e5b565b6001600160a01b03166341ee6d0e866040518263ffffffff1660e01b8152600401610ab49190612140565b5f60405180830381865afa158015610ace573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610af5919081019061218b565b604051602001610b089493929190612233565b6040516020818303038152906040529050919050565b610b26611644565b610b305f19611607565b565b5f610b3c816114f8565b610b4960208301836120e0565b610b52816116e7565b6040516304c1b8eb60e31b815283906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610ba0908490600401612140565b602060405180830381865afa158015610bbb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdf919061214e565b610bfc57604051631fb1705560e21b815260040160405180910390fd5b83610c0f61026236839003830183611e5b565b610c2c57604051634d2baea960e11b815260040160405180910390fd5b5f610c44610c3f36889003880188611e5b565b611787565b5f818152609960205260409081902080546001600160a01b0319169055519091507fd7811913efd5d98fc7ea0d1fdd022b3d31987815360842d05b1d1cf55578d16a90610c92908890612140565b60405180910390a15f818152609a60205260409081902080546001600160c01b0319169055517f210a1118a869246162804e2a7f21ef808ebd93f4be7ed512014fe29a7a8be02e90610ce5908890612140565b60405180910390a1610cf86097826118ca565b507f4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb86604051610d289190612140565b60405180910390a1505050505050565b610d4061149e565b610b305f611542565b5f60995f610d5684611787565b815260208101919091526040015f20546001600160a01b031692915050565b5f610d8060976118d5565b905090565b6060805f610d93609b6118de565b90505f8167ffffffffffffffff811115610daf57610daf611db8565b604051908082528060200260200182016040528015610dd8578160200160208202803683370190505b5090505f8267ffffffffffffffff811115610df557610df5611db8565b604051908082528060200260200182016040528015610e1e578160200160208202803683370190505b5090505f5b83811015610e90575f80610e38609b846118e8565b9150915081858481518110610e4f57610e4f6120fb565b60200260200101818152505080848481518110610e6e57610e6e6120fb565b6001600160a01b03909216602092830291909101909101525050600101610e23565b509094909350915050565b60605f610ea860976118d5565b90505f8167ffffffffffffffff811115610ec457610ec4611db8565b604051908082528060200260200182016040528015610f0857816020015b604080518082019091525f8082526020820152815260200190600190039081610ee25790505b5090505f5b82811015610f87575f610f21609783611905565b90505f610f5d82604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b905080848481518110610f7257610f726120fb565b60209081029190910101525050600101610f0d565b5092915050565b5f610f98816114f8565b610fa560208501856120e0565b610fae816116e7565b6040516304c1b8eb60e31b815285906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610ffc908490600401612140565b602060405180830381865afa158015611017573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103b919061214e565b61105857604051631fb1705560e21b815260040160405180910390fd5b5f604051631f3ff92360e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cffe48c906110a5908a90600401612140565b602060405180830381865afa1580156110c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e4919061216d565b60028111156110f5576110f561221f565b036111135760405163e57cacbd60e01b815260040160405180910390fd5b611130611128610c3f36899003890189611e5b565b609790611910565b61114d57604051631883461560e01b815260040160405180910390fd5b7f4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a68660405161117c9190612140565b60405180910390a161119661083536889003880188611e5b565b6105c06111a836889003880188611e5b565b6109b736879003870187611e5b565b6111bf61149e565b6111c881611593565b50565b6060818311156111ee5760405163561ce9bb60e01b815260040160405180910390fd5b6111f860976118d5565b821115611218576040516302da361360e61b815260040160405180910390fd5b5f611223848461229f565b90505f8167ffffffffffffffff81111561123f5761123f611db8565b60405190808252806020026020018201604052801561128357816020015b604080518082019091525f808252602082015281526020019060019003908161125d5790505b5090505f5b8281101561130c575f6112a661129e83896122b2565b609790611905565b90505f6112e282604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b9050808484815181106112f7576112f76120fb565b60209081029190910101525050600101611288565b50949350505050565b61131d61149e565b6003611328816114f8565b5f5b828110156106e8575f848483818110611345576113456120fb565b90506020020135905061136281609b61191b90919063ffffffff16565b61137f5760405163b3f92ba160e01b815260040160405180910390fd5b6040518181527f6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e59060200160405180910390a15060010161132a565b6113c361149e565b6001600160a01b0381166114285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065e565b6111c881611542565b611439611926565b606654801982198116146114605760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6033546001600160a01b03163314610b305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065e565b606654600160ff83161b908116036111c85760405163840a48d560e01b815260040160405180910390fd5b5f61153884846001600160a01b0385166119d7565b90505b9392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8163ffffffff16116115b9576040516316d98e1b60e31b815260040160405180910390fd5b609e805463ffffffff191663ffffffff83169081179091556040519081527f4fbcd0cca70015b33db8af4aa4f2bd6fd6c1efa9460b8e2333f252c1467a63279060200160405180910390a150565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156116a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ca919061214e565b610b3057604051631d77d47760e21b815260040160405180910390fd5b6116f0816119f3565b6111c85760405163932d94f760e01b815260040160405180910390fd5b8060995f61171a85611787565b81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055507f7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df828260405161177b9291906122c5565b60405180910390a15050565b5f815f0151826020015163ffffffff166040516020016117d292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526109d1906122eb565b602081015163ffffffff1615806118115750609e54602082015163ffffffff918216911610155b61182e57604051632e46483160e11b815260040160405180910390fd5b80609a5f61183b85611787565b815260208082019290925260409081015f2083518154949093015163ffffffff16600160a01b026001600160c01b03199094166001600160a01b0390931692909217929092179055517f3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e29061177b908490849061230e565b5f818152600183016020526040812054151561153b565b5f61153b8383611a9c565b5f6109d1825490565b5f6109d182611b7f565b5f8080806118f68686611b89565b909450925050505b9250929050565b5f61153b8383611bb2565b5f61153b8383611bd8565b5f61153b8383611c24565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611982573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a69190612329565b6001600160a01b0316336001600160a01b031614610b305760405163794821ff60e01b815260040160405180910390fd5b5f82815260028401602052604081208290556115388484611910565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb890608401602060405180830381865afa158015611a78573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d1919061214e565b5f8181526001830160205260408120548015611b76575f611abe60018361229f565b85549091505f90611ad19060019061229f565b9050818114611b30575f865f018281548110611aef57611aef6120fb565b905f5260205f200154905080875f018481548110611b0f57611b0f6120fb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611b4157611b41612344565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506109d1565b5f9150506109d1565b5f6109d1826118d5565b5f8080611b968585611905565b5f81815260029690960160205260409095205494959350505050565b5f825f018281548110611bc757611bc76120fb565b905f5260205f200154905092915050565b5f818152600183016020526040812054611c1d57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556109d1565b505f6109d1565b5f818152600283016020526040812081905561153b83836118ca565b5f5f83601f840112611c50575f5ffd5b50813567ffffffffffffffff811115611c67575f5ffd5b6020830191508360208260051b85010111156118fe575f5ffd5b5f5f5f5f60408587031215611c94575f5ffd5b843567ffffffffffffffff811115611caa575f5ffd5b611cb687828801611c40565b909550935050602085013567ffffffffffffffff811115611cd5575f5ffd5b611ce187828801611c40565b95989497509550505050565b6001600160a01b03811681146111c8575f5ffd5b803563ffffffff81168114611d14575f5ffd5b919050565b5f5f5f60608486031215611d2b575f5ffd5b8335611d3681611ced565b9250611d4460208501611d01565b929592945050506040919091013590565b5f60208284031215611d65575f5ffd5b5035919050565b5f60408284031215611d7c575f5ffd5b50919050565b5f5f60608385031215611d93575f5ffd5b611d9d8484611d6c565b91506040830135611dad81611ced565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611df557611df5611db8565b604052919050565b5f60408284031215611e0d575f5ffd5b6040805190810167ffffffffffffffff81118282101715611e3057611e30611db8565b6040529050808235611e4181611ced565b8152611e4f60208401611d01565b60208201525092915050565b5f60408284031215611e6b575f5ffd5b61153b8383611dfd565b80516001600160a01b0316825260209081015163ffffffff16910152565b604081016109d18284611e75565b5f5f60808385031215611eb2575f5ffd5b611ebc8484611d6c565b9150611ecb8460408501611d6c565b90509250929050565b5f60408284031215611ee4575f5ffd5b61153b8383611d6c565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61153b6020830184611eee565b5f60208284031215611f3e575f5ffd5b813560ff8116811461153b575f5ffd5b604080825283519082018190525f9060208501906060840190835b81811015611f87578351835260209384019390920191600101611f69565b5050838103602080860191909152855180835291810192508501905f5b81811015611fcb5782516001600160a01b0316845260209384019390920191600101611fa4565b50919695505050505050565b602080825282518282018190525f918401906040840190835b8181101561201957612003838551611e75565b6020939093019260409290920191600101611ff0565b509095945050505050565b5f5f5f60a08486031215612036575f5ffd5b6120408585611d6c565b9250604084013561205081611ced565b915061205f8560608601611d6c565b90509250925092565b5f60208284031215612078575f5ffd5b61153b82611d01565b5f5f60408385031215612092575f5ffd5b50508035926020909101359150565b5f5f602083850312156120b2575f5ffd5b823567ffffffffffffffff8111156120c8575f5ffd5b6120d485828601611c40565b90969095509350505050565b5f602082840312156120f0575f5ffd5b813561153b81611ced565b634e487b7160e01b5f52603260045260245ffd5b803561211a81611ced565b6001600160a01b0316825263ffffffff61213660208301611d01565b1660208301525050565b604081016109d1828461210f565b5f6020828403121561215e575f5ffd5b8151801515811461153b575f5ffd5b5f6020828403121561217d575f5ffd5b81516003811061153b575f5ffd5b5f6020828403121561219b575f5ffd5b815167ffffffffffffffff8111156121b1575f5ffd5b8201601f810184136121c1575f5ffd5b805167ffffffffffffffff8111156121db576121db611db8565b6121ee601f8201601f1916602001611dcc565b818152856020838501011115612202575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b634e487b7160e01b5f52602160045260245ffd5b61223d818661210f565b5f6003851061225a57634e487b7160e01b5f52602160045260245ffd5b84604083015261226d6060830185611e75565b60c060a083015261228160c0830184611eee565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109d1576109d161228b565b808201808211156109d1576109d161228b565b606081016122d38285611e75565b6001600160a01b039290921660409190910152919050565b80516020808301519190811015611d7c575f1960209190910360031b1b16919050565b6080810161231c8285611e75565b61153b6040830184611e75565b5f60208284031215612339575f5ffd5b815161153b81611ced565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220bdd715ceb1cce93569134d7f359f2a0922874a581c239a6bbb62ae57b8333e4a64736f6c634300081e0033", + Bin: "0x610100604052348015610010575f5ffd5b506040516125b73803806125b783398101604081905261002f9161015b565b818484836001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805291821660a052811660c0521660e05261007f610088565b505050506101b7565b5f54610100900460ff16156100f35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610142575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610158575f5ffd5b50565b5f5f5f5f6080858703121561016e575f5ffd5b845161017981610144565b602086015190945061018a81610144565b604086015190935061019b81610144565b60608601519092506101ac81610144565b939692955090935050565b60805160a05160c05160e05161238e6102295f395f81816102db0152611a3101525f818161027c015281816109dc015261107001525f81816103db01528181610762015281816108d501528181610b6b0152610fc701525f818161036d015281816116590152611928015261238e5ff3fe608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c8063715018a6116100fe578063ca8aa7c71161009e578063d9a6729e1161006e578063d9a6729e14610438578063dfbd9dfd1461044b578063f2fde38b1461045e578063fabc1cbc14610471575f5ffd5b8063ca8aa7c7146103d6578063d09b978b146103fd578063d504491114610412578063d6db9e2514610425575f5ffd5b80638da5cb5b116100d95780638da5cb5b1461038f578063ac505f4b146103a0578063b186a60e146103b8578063c4bffe2b146103c0575f5ffd5b8063715018a61461034d57806375e4b53914610355578063886f119514610368575f5ffd5b80633ec45c7e11610169578063595c6a6711610144578063595c6a67146102fd5780635ac86ab7146103055780635c975abb146103285780636c55a37f1461033a575f5ffd5b80633ec45c7e1461027757806341ee6d0e146102b65780634657e26a146102d6575f5ffd5b80631ca9142a116101a45780631ca9142a1461020557806321fa7fdc14610218578063277e1e621461024157806336b200de14610254575f5ffd5b806304e98be3146101ca5780630f19aaef146101df578063136439dd146101f2575b5f5ffd5b6101dd6101d8366004611c81565b610484565b005b6101dd6101ed366004611d19565b6105c8565b6101dd610200366004611d55565b6106ee565b6101dd610213366004611d82565b610728565b61022b610226366004611e5b565b61083b565b6040516102389190611e93565b60405180910390f35b6101dd61024f366004611ea1565b61089b565b610267610262366004611e5b565b6109bc565b6040519015158152602001610238565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610238565b6102c96102c4366004611ed4565b6109d7565b6040516102389190611f1c565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b6101dd610b1e565b610267610313366004611f2e565b606654600160ff9092169190911b9081161490565b6066545b604051908152602001610238565b6101dd610348366004611ed4565b610b32565b6101dd610d38565b61029e610363366004611e5b565b610d49565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b031661029e565b609e5460405163ffffffff9091168152602001610238565b61032c610d75565b6103c8610d85565b604051610238929190611f4e565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b610405610e9b565b6040516102389190611fd7565b6101dd610420366004612024565b610f8e565b6101dd610433366004612068565b6111b7565b610405610446366004612081565b6111cb565b6101dd6104593660046120a1565b611315565b6101dd61046c3660046120e0565b6113bb565b6101dd61047f366004611d55565b611431565b61048c61149e565b6003610497816114f8565b8382146104b75760405163512509d360e11b815260040160405180910390fd5b5f5b848110156105c0575f8686838181106104d4576104d46120fb565b905060200201359050805f036104fd57604051633d23e4d160e11b815260040160405180910390fd5b61053181868685818110610513576105136120fb565b905060200201602081019061052891906120e0565b609b9190611523565b61054e576040516324bf631b60e11b815260040160405180910390fd5b7f7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff6281868685818110610582576105826120fb565b905060200201602081019061059791906120e0565b604080519283526001600160a01b0390911660208301520160405180910390a1506001016104b9565b505050505050565b5f54610100900460ff16158080156105e657505f54600160ff909116105b806105ff5750303b1580156105ff57505f5460ff166001145b6106675760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610688575f805461ff0019166101001790555b61069184611542565b61069a83611593565b6106a382611607565b80156106e8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6106f6611644565b606654818116811461071b5760405163c61dca5d60e01b815260040160405180910390fd5b61072482611607565b5050565b6001610733816114f8565b61074060208401846120e0565b610749816116e7565b6040516304c1b8eb60e31b815284906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610797908490600401612140565b602060405180830381865afa1580156107b2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d6919061214e565b6107f357604051631fb1705560e21b815260040160405180910390fd5b8461080661026236839003830183611e5b565b61082357604051634d2baea960e11b815260040160405180910390fd5b6105c061083536889003880188611e5b565b8661170d565b604080518082019091525f8082526020820152609a5f61085a84611787565b815260208082019290925260409081015f208151808301909252546001600160a01b0381168252600160a01b900463ffffffff169181019190915292915050565b60026108a6816114f8565b6108b360208401846120e0565b6108bc816116e7565b6040516304c1b8eb60e31b815284906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc7589061090a908490600401612140565b602060405180830381865afa158015610925573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610949919061214e565b61096657604051631fb1705560e21b815260040160405180910390fd5b8461097961026236839003830183611e5b565b61099657604051634d2baea960e11b815260040160405180910390fd5b6105c06109a836889003880188611e5b565b6109b736889003880188611e5b565b6117ea565b5f6109d16109c983611787565b6097906118b3565b92915050565b6060817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637cffe48c846040518263ffffffff1660e01b8152600401610a269190612140565b602060405180830381865afa158015610a41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a65919061216d565b610a7761022636869003860186611e5b565b610a8961036336879003870187611e5b565b6001600160a01b03166341ee6d0e866040518263ffffffff1660e01b8152600401610ab49190612140565b5f60405180830381865afa158015610ace573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610af5919081019061218b565b604051602001610b089493929190612233565b6040516020818303038152906040529050919050565b610b26611644565b610b305f19611607565b565b5f610b3c816114f8565b610b4960208301836120e0565b610b52816116e7565b6040516304c1b8eb60e31b815283906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610ba0908490600401612140565b602060405180830381865afa158015610bbb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdf919061214e565b610bfc57604051631fb1705560e21b815260040160405180910390fd5b83610c0f61026236839003830183611e5b565b610c2c57604051634d2baea960e11b815260040160405180910390fd5b5f610c44610c3f36889003880188611e5b565b611787565b5f818152609960205260409081902080546001600160a01b0319169055519091507fd7811913efd5d98fc7ea0d1fdd022b3d31987815360842d05b1d1cf55578d16a90610c92908890612140565b60405180910390a15f818152609a60205260409081902080546001600160c01b0319169055517f210a1118a869246162804e2a7f21ef808ebd93f4be7ed512014fe29a7a8be02e90610ce5908890612140565b60405180910390a1610cf86097826118ca565b507f4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb86604051610d289190612140565b60405180910390a1505050505050565b610d4061149e565b610b305f611542565b5f60995f610d5684611787565b815260208101919091526040015f20546001600160a01b031692915050565b5f610d8060976118d5565b905090565b6060805f610d93609b6118de565b90505f8167ffffffffffffffff811115610daf57610daf611db8565b604051908082528060200260200182016040528015610dd8578160200160208202803683370190505b5090505f8267ffffffffffffffff811115610df557610df5611db8565b604051908082528060200260200182016040528015610e1e578160200160208202803683370190505b5090505f5b83811015610e90575f80610e38609b846118e8565b9150915081858481518110610e4f57610e4f6120fb565b60200260200101818152505080848481518110610e6e57610e6e6120fb565b6001600160a01b03909216602092830291909101909101525050600101610e23565b509094909350915050565b60605f610ea860976118d5565b90505f8167ffffffffffffffff811115610ec457610ec4611db8565b604051908082528060200260200182016040528015610f0857816020015b604080518082019091525f8082526020820152815260200190600190039081610ee25790505b5090505f5b82811015610f87575f610f21609783611905565b90505f610f5d82604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b905080848481518110610f7257610f726120fb565b60209081029190910101525050600101610f0d565b5092915050565b5f610f98816114f8565b610fa560208501856120e0565b610fae816116e7565b6040516304c1b8eb60e31b815285906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610ffc908490600401612140565b602060405180830381865afa158015611017573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103b919061214e565b61105857604051631fb1705560e21b815260040160405180910390fd5b5f604051631f3ff92360e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cffe48c906110a5908a90600401612140565b602060405180830381865afa1580156110c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e4919061216d565b60028111156110f5576110f561221f565b036111135760405163e57cacbd60e01b815260040160405180910390fd5b611130611128610c3f36899003890189611e5b565b609790611910565b61114d57604051631883461560e01b815260040160405180910390fd5b7f4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a68660405161117c9190612140565b60405180910390a161119661083536889003880188611e5b565b6105c06111a836889003880188611e5b565b6109b736879003870187611e5b565b6111bf61149e565b6111c881611593565b50565b6060818311156111ee5760405163561ce9bb60e01b815260040160405180910390fd5b6111f860976118d5565b821115611218576040516302da361360e61b815260040160405180910390fd5b5f611223848461229f565b90505f8167ffffffffffffffff81111561123f5761123f611db8565b60405190808252806020026020018201604052801561128357816020015b604080518082019091525f808252602082015281526020019060019003908161125d5790505b5090505f5b8281101561130c575f6112a661129e83896122b2565b609790611905565b90505f6112e282604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b9050808484815181106112f7576112f76120fb565b60209081029190910101525050600101611288565b50949350505050565b61131d61149e565b6003611328816114f8565b5f5b828110156106e8575f848483818110611345576113456120fb565b90506020020135905061136281609b61191b90919063ffffffff16565b61137f5760405163b3f92ba160e01b815260040160405180910390fd5b6040518181527f6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e59060200160405180910390a15060010161132a565b6113c361149e565b6001600160a01b0381166114285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065e565b6111c881611542565b611439611926565b606654801982198116146114605760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6033546001600160a01b03163314610b305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065e565b606654600160ff83161b908116036111c85760405163840a48d560e01b815260040160405180910390fd5b5f61153884846001600160a01b0385166119d7565b90505b9392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8163ffffffff16116115b9576040516316d98e1b60e31b815260040160405180910390fd5b609e805463ffffffff191663ffffffff83169081179091556040519081527f4fbcd0cca70015b33db8af4aa4f2bd6fd6c1efa9460b8e2333f252c1467a63279060200160405180910390a150565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156116a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ca919061214e565b610b3057604051631d77d47760e21b815260040160405180910390fd5b6116f0816119f3565b6111c85760405163932d94f760e01b815260040160405180910390fd5b8060995f61171a85611787565b81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055507f7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df828260405161177b9291906122c5565b60405180910390a15050565b5f815f0151826020015163ffffffff166040516020016117d292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526109d1906122eb565b602081015163ffffffff1615806118115750609e54602082015163ffffffff918216911610155b61182e57604051632e46483160e11b815260040160405180910390fd5b80609a5f61183b85611787565b815260208082019290925260409081015f2083518154949093015163ffffffff16600160a01b026001600160c01b03199094166001600160a01b0390931692909217929092179055517f3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e29061177b908490849061230e565b5f818152600183016020526040812054151561153b565b5f61153b8383611a9c565b5f6109d1825490565b5f6109d182611b7f565b5f8080806118f68686611b89565b909450925050505b9250929050565b5f61153b8383611bb2565b5f61153b8383611bd8565b5f61153b8383611c24565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611982573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a69190612329565b6001600160a01b0316336001600160a01b031614610b305760405163794821ff60e01b815260040160405180910390fd5b5f82815260028401602052604081208290556115388484611910565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb890608401602060405180830381865afa158015611a78573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d1919061214e565b5f8181526001830160205260408120548015611b76575f611abe60018361229f565b85549091505f90611ad19060019061229f565b9050818114611b30575f865f018281548110611aef57611aef6120fb565b905f5260205f200154905080875f018481548110611b0f57611b0f6120fb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611b4157611b41612344565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506109d1565b5f9150506109d1565b5f6109d1826118d5565b5f8080611b968585611905565b5f81815260029690960160205260409095205494959350505050565b5f825f018281548110611bc757611bc76120fb565b905f5260205f200154905092915050565b5f818152600183016020526040812054611c1d57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556109d1565b505f6109d1565b5f818152600283016020526040812081905561153b83836118ca565b5f5f83601f840112611c50575f5ffd5b50813567ffffffffffffffff811115611c67575f5ffd5b6020830191508360208260051b85010111156118fe575f5ffd5b5f5f5f5f60408587031215611c94575f5ffd5b843567ffffffffffffffff811115611caa575f5ffd5b611cb687828801611c40565b909550935050602085013567ffffffffffffffff811115611cd5575f5ffd5b611ce187828801611c40565b95989497509550505050565b6001600160a01b03811681146111c8575f5ffd5b803563ffffffff81168114611d14575f5ffd5b919050565b5f5f5f60608486031215611d2b575f5ffd5b8335611d3681611ced565b9250611d4460208501611d01565b929592945050506040919091013590565b5f60208284031215611d65575f5ffd5b5035919050565b5f60408284031215611d7c575f5ffd5b50919050565b5f5f60608385031215611d93575f5ffd5b611d9d8484611d6c565b91506040830135611dad81611ced565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611df557611df5611db8565b604052919050565b5f60408284031215611e0d575f5ffd5b6040805190810167ffffffffffffffff81118282101715611e3057611e30611db8565b6040529050808235611e4181611ced565b8152611e4f60208401611d01565b60208201525092915050565b5f60408284031215611e6b575f5ffd5b61153b8383611dfd565b80516001600160a01b0316825260209081015163ffffffff16910152565b604081016109d18284611e75565b5f5f60808385031215611eb2575f5ffd5b611ebc8484611d6c565b9150611ecb8460408501611d6c565b90509250929050565b5f60408284031215611ee4575f5ffd5b61153b8383611d6c565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61153b6020830184611eee565b5f60208284031215611f3e575f5ffd5b813560ff8116811461153b575f5ffd5b604080825283519082018190525f9060208501906060840190835b81811015611f87578351835260209384019390920191600101611f69565b5050838103602080860191909152855180835291810192508501905f5b81811015611fcb5782516001600160a01b0316845260209384019390920191600101611fa4565b50919695505050505050565b602080825282518282018190525f918401906040840190835b8181101561201957612003838551611e75565b6020939093019260409290920191600101611ff0565b509095945050505050565b5f5f5f60a08486031215612036575f5ffd5b6120408585611d6c565b9250604084013561205081611ced565b915061205f8560608601611d6c565b90509250925092565b5f60208284031215612078575f5ffd5b61153b82611d01565b5f5f60408385031215612092575f5ffd5b50508035926020909101359150565b5f5f602083850312156120b2575f5ffd5b823567ffffffffffffffff8111156120c8575f5ffd5b6120d485828601611c40565b90969095509350505050565b5f602082840312156120f0575f5ffd5b813561153b81611ced565b634e487b7160e01b5f52603260045260245ffd5b803561211a81611ced565b6001600160a01b0316825263ffffffff61213660208301611d01565b1660208301525050565b604081016109d1828461210f565b5f6020828403121561215e575f5ffd5b8151801515811461153b575f5ffd5b5f6020828403121561217d575f5ffd5b81516003811061153b575f5ffd5b5f6020828403121561219b575f5ffd5b815167ffffffffffffffff8111156121b1575f5ffd5b8201601f810184136121c1575f5ffd5b805167ffffffffffffffff8111156121db576121db611db8565b6121ee601f8201601f1916602001611dcc565b818152856020838501011115612202575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b634e487b7160e01b5f52602160045260245ffd5b61223d818661210f565b5f6003851061225a57634e487b7160e01b5f52602160045260245ffd5b84604083015261226d6060830185611e75565b60c060a083015261228160c0830184611eee565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109d1576109d161228b565b808201808211156109d1576109d161228b565b606081016122d38285611e75565b6001600160a01b039290921660409190910152919050565b80516020808301519190811015611d7c575f1960209190910360031b1b16919050565b6080810161231c8285611e75565b61153b6040830184611e75565b5f60208284031215612339575f5ffd5b815161153b81611ced565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212205f367ac5988f2026f0727d1dbe43305921daf374bbe2a46200b02e4f8ee9dcd964736f6c634300081e0033", } // CrossChainRegistryABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/DelegationManager/binding.go b/pkg/bindings/DelegationManager/binding.go index 74218e9d60..633c0c6fc2 100644 --- a/pkg/bindings/DelegationManager/binding.go +++ b/pkg/bindings/DelegationManager/binding.go @@ -62,7 +62,7 @@ type OperatorSet 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\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_MIN_WITHDRAWAL_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approver\",\"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\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"convertToDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"totalQueued\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"curDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"beaconChainSlashingFactorDecrease\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateTo\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtilsMixinTypes.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\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operator\",\"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\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"spent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositScalingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"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\":\"getDepositedShares\",\"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\":\"getOperatorsShares\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawalRoots\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawals\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"shares\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashableSharesInQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialPausedStatus\",\"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\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"pending\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"__deprecated_withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"queuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"newOperator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newOperatorApproverSig\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtilsMixinTypes.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"initDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allocationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"newMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"totalDepositSharesToSlash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"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\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationApproverUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DepositScalingFactorUpdated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"newDepositScalingFactor\",\"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\":\"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\":\"delegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"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\":\"OperatorSharesSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"totalSlashedShares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"SlashingWithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingWithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"sharesToWithdraw\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FullySlashed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDepositScalingFactor\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAllocationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManagerOrEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"WithdrawalDelayNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalNotQueued\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawerNotCaller\",\"inputs\":[]}]", - Bin: "0x610160604052348015610010575f5ffd5b5060405161605638038061605683398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615c006104565f395f8181610fc10152613db201525f81816104120152613a4001525f8181610703015281816131b101528181613483015261363c01525f818161075301528181610cf301528181610eb60152818161103901528181611392015281816117f401528181612446015261413001525f818161043901528181610e34015281816112f10152818161156501528181612d3701528181612f1801526132f701525f818161036f01528181610e02015281816114b901526132d101525f81816105e201528181612afd0152613e210152615c005ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636d70f7ae1161017b578063bb45fef2116100e4578063e4cc3f901161009e578063f698da2511610079578063f698da25146107ce578063fabc1cbc146107d6578063fd8aa88d146107e9578063fe4b84df146107fc575f5ffd5b8063e4cc3f9014610788578063eea9064b1461079b578063f0e0e676146107ae575f5ffd5b8063bb45fef2146106b9578063bfae3fd2146106e6578063c448feb8146106f9578063c978f7ac1461072d578063ca8aa7c71461074e578063da8be86414610775575f5ffd5b80639104c319116101355780639104c319146106175780639435bb431461063257806399f5371b14610645578063a178848414610665578063a33a343314610684578063b7f06ebe14610697575f5ffd5b80636d70f7ae1461057a5780636e1744481461058d578063778e55f3146105a057806378296ec5146105ca578063886f1195146105dd5780639004134714610604575f5ffd5b806354b7c96c1161021d5780635c975abb116101d75780635c975abb146104d45780635d975e88146104dc5780635dd68579146104fd57806360a0d1ce1461051e57806365da12641461053157806366d5ba9314610559575f5ffd5b806354b7c96c1461045b57806354fd4d501461046e578063595c6a6714610483578063597b36da1461048b5780635ac86ab71461049e5780635ae679a7146104c1575f5ffd5b806339b70e381161026e57806339b70e381461036a5780633c651cf2146103a95780633cdeb5e0146103bc5780633e28391d146103ea5780634657e26a1461040d5780634665bcda14610434575f5ffd5b806304a4f979146102b55780630b9f487a146102ef5780630dd8dd0214610302578063136439dd1461032257806325df922e146103375780632aa6d88814610357575b5f5ffd5b6102dc7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b6102dc6102fd366004614a6a565b61080f565b610315610310366004614b01565b610897565b6040516102e69190614b3f565b610335610330366004614b76565b610b09565b005b61034a610345366004614d0b565b610b43565b6040516102e69190614db9565b610335610365366004614e1b565b610ca3565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102e6565b6103356103b7366004614e79565b610df7565b6103916103ca366004614ebc565b6001600160a01b039081165f908152609960205260409020600101541690565b6103fd6103f8366004614ebc565b610f4a565b60405190151581526020016102e6565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b610335610469366004614ed7565b610f69565b610476610fba565b6040516102e69190614f3c565b610335610fea565b6102dc61049936600461500a565b610ffe565b6103fd6104ac36600461503b565b606654600160ff9092169190911b9081161490565b6102dc6104cf36600461506f565b61102d565b6066546102dc565b6104ef6104ea366004614b76565b61119f565b6040516102e69291906151a4565b61051061050b366004614ebc565b6111bc565b6040516102e6929190615216565b61033561052c366004615283565b6112e6565b61039161053f366004614ebc565b609a6020525f90815260409020546001600160a01b031681565b61056c610567366004614ebc565b611491565b6040516102e69291906152c2565b6103fd610588366004614ebc565b611791565b6102dc61059b366004614ed7565b6117c9565b6102dc6105ae366004614ed7565b609860209081525f928352604080842090915290825290205481565b6103356105d83660046152d4565b611873565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b61034a610612366004615324565b6118ec565b61039173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610335610640366004615370565b6119c2565b610658610653366004614b76565b611a7d565b6040516102e6919061540c565b6102dc610673366004614ebc565b609f6020525f908152604090205481565b61031561069236600461541e565b611b99565b6103fd6106a5366004614b76565b609e6020525f908152604090205460ff1681565b6103fd6106c7366004615505565b609c60209081525f928352604080842090915290825290205460ff1681565b6102dc6106f4366004614ed7565b611bb1565b60405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016102e6565b61074061073b366004615324565b611bed565b6040516102e692919061552f565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b610315610783366004614ebc565b611e7a565b61033561079636600461554e565b611fa3565b6103356107a936600461541e565b611fdb565b6107c16107bc3660046155cc565b612046565b6040516102e69190615679565b6102dc6120eb565b6103356107e4366004614b76565b6121a4565b6103156107f7366004614ebc565b612212565b61033561080a366004614b76565b612235565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f9061088d9060e00160405160208183030381529060405280519060200120612346565b9695505050505050565b606060016108a481612374565b6108ac6123a2565b5f836001600160401b038111156108c5576108c5614b8d565b6040519080825280602002602001820160405280156108ee578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610afa578686828181106109285761092861568b565b905060200281019061093a919061569f565b6109489060208101906156bd565b905087878381811061095c5761095c61568b565b905060200281019061096e919061569f565b61097890806156bd565b905014610998576040516343714afd60e01b815260040160405180910390fd5b5f610a0233848a8a868181106109b0576109b061568b565b90506020028101906109c2919061569f565b6109cc90806156bd565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506123fb92505050565b9050610ad433848a8a86818110610a1b57610a1b61568b565b9050602002810190610a2d919061569f565b610a3790806156bd565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610a7c57610a7c61568b565b9050602002810190610a8e919061569f565b610a9c9060208101906156bd565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525088925061254d915050565b848381518110610ae657610ae661568b565b60209081029190910101525060010161090e565b5050600160c955949350505050565b610b11612ae8565b6066548181168114610b365760405163c61dca5d60e01b815260040160405180910390fd5b610b3f82612b8b565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610b6c8683876123fb565b90505f85516001600160401b03811115610b8857610b88614b8d565b604051908082528060200260200182016040528015610bb1578160200160208202803683370190505b5090505f5b8651811015610c96576001600160a01b0388165f90815260a260205260408120885182908a9085908110610bec57610bec61568b565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610c70878381518110610c3e57610c3e61568b565b6020026020010151858481518110610c5857610c5861568b565b602002602001015183612bc89092919063ffffffff16565b838381518110610c8257610c8261568b565b602090810291909101015250600101610bb6565b50925050505b9392505050565b610cab6123a2565b610cb433610f4a565b15610cd257604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610d3c575f5ffd5b505af1158015610d4e573d5f5f3e3d5ffd5b50505050610d5c3385612be6565b610d663333612c48565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610ddf929190615702565b60405180910390a2610df1600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610e565750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610e735760405163045206a560e21b815260040160405180910390fd5b610e7b6123a2565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015610efb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1f9190615730565b90505f610f2d878784612ed1565b9050610f3d838888888886612fb3565b505050610df1600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b81610f73816130f8565b610f7b6123a2565b610f8483611791565b610fa1576040516325ec6c1f60e01b815260040160405180910390fd5b610fab8383612be6565b610fb5600160c955565b505050565b6060610fe57f000000000000000000000000000000000000000000000000000000000000000061311e565b905090565b610ff2612ae8565b610ffc5f19612b8b565b565b5f81604051602001611010919061540c565b604051602081830303815290604052805190602001209050919050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611077576040516323d871a560e01b815260040160405180910390fd5b61107f6123a2565b6001600160a01b038088165f9081526098602090815260408083209388168352929052908120546110bd906001600160401b0380871690861661315b565b90505f6110cc89878787613173565b90506110d8818361575f565b92506110e6895f8885613230565b604080516001600160a01b038881168252602082018690528b16917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a2611135866132aa565b6001600160a01b0316633fb99ca5898989876040518563ffffffff1660e01b81526004016111669493929190615772565b5f604051808303815f87803b15801561117d575f5ffd5b505af115801561118f573d5f5f3e3d5ffd5b50505050505061088d600160c955565b6111a761492b565b60606111b28361331c565b9094909350915050565b6060805f6111c984612212565b8051909150806001600160401b038111156111e6576111e6614b8d565b60405190808252806020026020018201604052801561121f57816020015b61120c61492b565b8152602001906001900390816112045790505b509350806001600160401b0381111561123a5761123a614b8d565b60405190808252806020026020018201604052801561126d57816020015b60608152602001906001900390816112585790505b5092505f5b818110156112de5761129c83828151811061128f5761128f61568b565b602002602001015161331c565b8683815181106112ae576112ae61568b565b602002602001018684815181106112c7576112c761568b565b602090810291909101019190915252600101611272565b505050915091565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461132f57604051633213a66160e21b815260040160405180910390fd5b6113376123a2565b61134083610f4a565b15610fab576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156113d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fb9190615730565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0845282528083208151928301909152548152919250611461866114596001600160401b0380871690891661356f565b849190613583565b9050611483848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac084613230565b50505050610fb5600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156114fd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115249190810190615822565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa1580156115aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906158dd565b9050805f036115e257509094909350915050565b5f835160016115f1919061575f565b6001600160401b0381111561160857611608614b8d565b604051908082528060200260200182016040528015611631578160200160208202803683370190505b5090505f84516001611643919061575f565b6001600160401b0381111561165a5761165a614b8d565b604051908082528060200260200182016040528015611683578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106116ae576116ae61568b565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106116e2576116e261568b565b60209081029190910101525f5b85518110156117835785818151811061170a5761170a61568b565b60200260200101518382815181106117245761172461568b565b60200260200101906001600160a01b031690816001600160a01b0316815250508481815181106117565761175661568b565b60200260200101518282815181106117705761177061568b565b60209081029190910101526001016116ef565b509097909650945050505050565b5f6001600160a01b038216158015906117c357506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611839573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061185d9190615730565b905061186b8484835f613173565b949350505050565b8261187d816130f8565b61188684611791565b6118a3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b670809084846040516118de929190615702565b60405180910390a250505050565b60605f82516001600160401b0381111561190857611908614b8d565b604051908082528060200260200182016040528015611931578160200160208202803683370190505b5090505f5b83518110156119ba576001600160a01b0385165f908152609860205260408120855190919086908490811061196d5761196d61568b565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20548282815181106119a7576119a761568b565b6020908102919091010152600101611936565b509392505050565b60026119cd81612374565b6119d56123a2565b855f5b81811015611a6857611a608989838181106119f5576119f561568b565b9050602002810190611a0791906158f4565b611a1090615908565b888884818110611a2257611a2261568b565b9050602002810190611a3491906156bd565b888886818110611a4657611a4661568b565b9050602002016020810190611a5b9190615913565b6135a1565b6001016119d8565b5050611a74600160c955565b50505050505050565b611a8561492b565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611b3357602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611b15575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611b8957602002820191905f5260205f20905b815481526020019060010190808311611b75575b5050505050815250509050919050565b6060611ba433611e7a565b9050610c9c848484611fdb565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610c9c906139e3565b60608082516001600160401b03811115611c0957611c09614b8d565b604051908082528060200260200182016040528015611c32578160200160208202803683370190505b50915082516001600160401b03811115611c4e57611c4e614b8d565b604051908082528060200260200182016040528015611c77578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ca28683876123fb565b90505f5b8551811015611e6f575f611cd2878381518110611cc557611cc561568b565b60200260200101516132aa565b9050806001600160a01b031663fe243a1789898581518110611cf657611cf661568b565b60200260200101516040518363ffffffff1660e01b8152600401611d309291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611d4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6f91906158dd565b858381518110611d8157611d8161568b565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f898581518110611dc457611dc461568b565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050611e48868481518110611e1657611e1661568b565b6020026020010151858581518110611e3057611e3061568b565b6020026020010151836135839092919063ffffffff16565b878481518110611e5a57611e5a61568b565b60209081029190910101525050600101611ca6565b5050505b9250929050565b6060611e846123a2565b611e8d82610f4a565b611eaa5760405163a5c7c44560e01b815260040160405180910390fd5b611eb382611791565b15611ed1576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b03831614611f89576001600160a01b038083165f908152609a602052604090205416611f0481613a02565b80611f2a57506001600160a01b038181165f908152609960205260409020600101541633145b611f4757604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b611f9282613aab565b9050611f9e600160c955565b919050565b6002611fae81612374565b611fb66123a2565b611fca611fc286615908565b8585856135a1565b611fd4600160c955565b5050505050565b611fe36123a2565b611fec33610f4a565b1561200a57604051633bf2b50360e11b815260040160405180910390fd5b61201383611791565b612030576040516325ec6c1f60e01b815260040160405180910390fd5b61203c33848484613ceb565b610fab3384612c48565b60605f83516001600160401b0381111561206257612062614b8d565b60405190808252806020026020018201604052801561209557816020015b60608152602001906001900390816120805790505b5090505f5b84518110156119ba576120c68582815181106120b8576120b861568b565b6020026020010151856118ec565b8282815181106120d8576120d861568b565b602090810291909101015260010161209a565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612158613daa565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6121ac613e1f565b606654801982198116146121d35760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906117c390613ed0565b5f54610100900460ff161580801561225357505f54600160ff909116105b8061226c5750303b15801561226c57505f5460ff166001145b6122d45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156122f5575f805461ff0019166101001790555b6122fe82612b8b565b8015610b3f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f61234f6120eb565b60405161190160f01b6020820152602281019190915260428101839052606201611010565b606654600160ff83161b9081160361239f5760405163840a48d560e01b815260040160405180910390fd5b50565b600260c954036123f45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016122cb565b600260c955565b60605f82516001600160401b0381111561241757612417614b8d565b604051908082528060200260200182016040528015612440578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b815260040161249292919061592e565b5f60405180830381865afa1580156124ac573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124d39190810190615951565b90505f5b84518110156125425761251d878683815181106124f6576124f661568b565b60200260200101518484815181106125105761251061568b565b6020026020010151612ed1565b83828151811061252f5761252f61568b565b60209081029190910101526001016124d7565b509095945050505050565b5f6001600160a01b038616612575576040516339b190bb60e11b815260040160405180910390fd5b83515f036125965760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b038111156125b0576125b0614b8d565b6040519080825280602002602001820160405280156125d9578160200160208202803683370190505b5090505f85516001600160401b038111156125f6576125f6614b8d565b60405190808252806020026020018201604052801561261f578160200160208202803683370190505b5090505f5b865181101561291b575f612643888381518110611cc557611cc561568b565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a858151811061267c5761267c61568b565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2090506126f58884815181106126ba576126ba61568b565b60200260200101518885815181106126d4576126d461568b565b60209081029190910181015160408051928301905284548252909190613583565b8484815181106127075761270761568b565b6020026020010181815250506127468884815181106127285761272861568b565b60209081029190910181015160408051928301905283548252613edc565b8584815181106127585761275861568b565b60209081029190910101526001600160a01b038a16156127ed576127af8a8a85815181106127885761278861568b565b60200260200101518786815181106127a2576127a261568b565b6020026020010151613ef0565b6127ed8a8c8b86815181106127c6576127c661568b565b60200260200101518787815181106127e0576127e061568b565b6020026020010151613230565b5f826001600160a01b031663724af4238d8c87815181106128105761281061568b565b60200260200101518c888151811061282a5761282a61568b565b60200260200101516040518463ffffffff1660e01b8152600401612850939291906159e0565b6020604051808303815f875af115801561286c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061289091906158dd565b9050805f0361290d575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b86815181106128d0576128d061568b565b60200260200101516128f5856040518060200160405290815f820154815250506139e3565b604051612904939291906159e0565b60405180910390a15b505050806001019050612624565b506001600160a01b0388165f908152609f6020526040812080549182919061294283615a04565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f6129a882610ffe565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612a5e9260058501920190614984565b5060c08201518051612a7a9160068401916020909101906149e7565b5050506001600160a01b038b165f90815260a360205260409020612a9e9082613f5a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612ad293929190615a1c565b60405180910390a19a9950505050505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015612b4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b6e9190615a46565b610ffc57604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61186b82612be0612bd9876139e3565b8690613f65565b90613f65565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c69101612206565b5f612c5281612374565b5f5f612c5d85611491565b915091505f612c6d5f86856123fb565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611a745773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612d0057612d0061568b565b60200260200101516001600160a01b031603612e705760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015612d7e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612da29190615730565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f878581518110612ddb57612ddb61568b565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050612e4f858481518110612e2d57612e2d61568b565b6020026020010151836001600160401b0316836135839092919063ffffffff16565b858481518110612e6157612e6161568b565b60200260200101818152505050505b612ec98688868481518110612e8757612e8761568b565b60200260200101515f878681518110612ea257612ea261568b565b6020026020010151878781518110612ebc57612ebc61568b565b6020026020010151612fb3565b600101612cc7565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b03841601612fa35760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015612f5f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f839190615730565b9050612f9b6001600160401b0384811690831661356f565b915050610c9c565b506001600160401b031692915050565b805f03612fd357604051630a33bc6960e21b815260040160405180910390fd5b81156130f0576001600160a01b038086165f90815260a26020908152604080832093881683529290522061300981858585613f79565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f9087908790613047906139e3565b604051613056939291906159e0565b60405180910390a161306786610f4a565b15611a74576001600160a01b038088165f908152609860209081526040808320938916835292905290812080548592906130a290849061575f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516130e6939291906159e0565b60405180910390a2505b505050505050565b61310181613a02565b61239f5760405163932d94f760e01b815260040160405180910390fd5b60605f61312a8361400f565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f6131698483856001614036565b61186b9085615a61565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906131a490614091565b90505f61320a60016131d67f000000000000000000000000000000000000000000000000000000000000000043615a74565b6131e09190615a74565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906140ab565b90505f6132178284615a61565b90506132248187876140c7565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613266908490615a61565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd8484846040516118de939291906159e0565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146132f5577f00000000000000000000000000000000000000000000000000000000000000006117c3565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b61332461492b565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a086019392908301828280156133d657602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116133b8575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561342c57602002820191905f5260205f20905b815481526020019060010190808311613418575b50505050508152505091508160a00151516001600160401b0381111561345457613454614b8d565b60405190808252806020026020018201604052801561347d578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516134b19190615a90565b90505f4363ffffffff168263ffffffff16106134e2576134dd845f015185602001518660a001516123fb565b6134f9565b6134f9845f015185602001518660a00151856140e5565b90505f5b8460a00151518110156112de5761354a8560c0015182815181106135235761352361568b565b602002602001015183838151811061353d5761353d61568b565b6020026020010151614213565b84828151811061355c5761355c61568b565b60209081029190910101526001016134fd565b5f610c9c8383670de0b6b3a764000061421e565b5f61186b8261359b613594876139e3565b869061356f565b9061356f565b60a08401515182146135c6576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b0316146135fc576040516316110d3560e21b815260040160405180910390fd5b5f61360685610ffe565b5f818152609e602052604090205490915060ff16613637576040516387c9d21960e01b815260040160405180910390fd5b60605f7f0000000000000000000000000000000000000000000000000000000000000000876080015161366a9190615a90565b90508063ffffffff164363ffffffff1611613698576040516378f67ae160e11b815260040160405180910390fd5b6136af875f015188602001518960a00151846140e5565b87516001600160a01b03165f90815260a3602052604090209092506136d5915083614303565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff191690559061372c6005830182614a20565b613739600683015f614a20565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00906137829084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a015191909316926137bc9184906123fb565b90505f5b8860a00151518110156139d8575f6137e78a60a001518381518110611cc557611cc561568b565b90505f61381d8b60c0015184815181106138035761380361568b565b602002602001015187858151811061353d5761353d61568b565b9050805f0361382d5750506139d0565b87156138fb57816001600160a01b0316632eae418c8c5f01518d60a00151868151811061385c5761385c61568b565b60200260200101518d8d888181106138765761387661568b565b905060200201602081019061388b9190614ebc565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b1580156138e0575f5ffd5b505af11580156138f2573d5f5f3e3d5ffd5b505050506139cd565b5f5f836001600160a01b03166350ff72258e5f01518f60a0015188815181106139265761392661568b565b6020026020010151866040518463ffffffff1660e01b815260040161394d939291906159e0565b60408051808303815f875af1158015613968573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061398c9190615aac565b915091506139ca878e5f01518f60a0015188815181106139ae576139ae61568b565b602002602001015185858b8b81518110612ebc57612ebc61568b565b50505b50505b6001016137c0565b505050505050505050565b80515f90156139f35781516117c3565b670de0b6b3a764000092915050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb890608401602060405180830381865afa158015613a87573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c39190615a46565b60606001613ab881612374565b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613b1786611491565b9150915081515f03613b2b57505050613ce5565b81516001600160401b03811115613b4457613b44614b8d565b604051908082528060200260200182016040528015613b6d578160200160208202803683370190505b5094505f613b7c8785856123fb565b90505f5b8351811015613cdf576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613c0057613c0061568b565b6020026020010151835f81518110613c1a57613c1a61568b565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613c4c57613c4c61568b565b6020026020010151825f81518110613c6657613c6661568b565b602002602001018181525050848481518110613c8457613c8461568b565b6020026020010151815f81518110613c9e57613c9e61568b565b602002602001018181525050613cb78b8985858561254d565b8a8581518110613cc957613cc961568b565b6020908102919091010152505050600101613b80565b50505050505b50919050565b6001600160a01b038084165f908152609960205260409020600101541680613d135750610df1565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff1615613d5757604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff19166001179055830151611fd4908290613d9e90889088908490889061080f565b8551602087015161430e565b60605f613dd67f000000000000000000000000000000000000000000000000000000000000000061311e565b9050805f81518110613dea57613dea61568b565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e7b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e9f9190615ace565b6001600160a01b0316336001600160a01b031614610ffc5760405163794821ff60e01b815260040160405180910390fd5b60605f610c9c83614360565b5f610c9c613ee9846139e3565b839061356f565b6001600160a01b038084165f90815260a5602090815260408083209386168352929052908120613f1f90614091565b9050610df143613f2f848461575f565b6001600160a01b038088165f90815260a560209081526040808320938a1683529290522091906143b9565b5f610c9c83836143c4565b5f610c9c83670de0b6b3a76400008461421e565b825f03613fa557604080516020810190915284548152613f9e908290612be0906139e3565b8455610df1565b6040805160208101909152845481525f90613fc1908584613583565b90505f613fce848361575f565b90505f613fe984612be0613fe2888a61575f565b8590613f65565b80885590505f819003611a745760405163172cec7360e31b815260040160405180910390fd5b5f60ff8216601f8111156117c357604051632cd44ac360e21b815260040160405180910390fd5b5f5f61404386868661421e565b9050600183600281111561405957614059615ae9565b14801561407557505f848061407057614070615afd565b868809115b156140885761408560018261575f565b90505b95945050505050565b5f61409c8282614410565b6001600160e01b031692915050565b5f6140b7838383614455565b6001600160e01b03169392505050565b5f61186b6140d58385615b11565b85906001600160401b031661356f565b60605f83516001600160401b0381111561410157614101614b8d565b60405190808252806020026020018201604052801561412a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b815260040161417e93929190615b30565b5f60405180830381865afa158015614198573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526141bf9190810190615951565b90505f5b8551811015614207576141e2888783815181106124f6576124f661568b565b8382815181106141f4576141f461568b565b60209081029190910101526001016141c3565b50909695505050505050565b5f610c9c838361356f565b5f80805f19858709858702925082811083820303915050805f036142555783828161424b5761424b615afd565b0492505050610c9c565b80841161429c5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016122cb565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610c9c838361449e565b4281101561432f57604051630819bdcd60e01b815260040160405180910390fd5b6143436001600160a01b0385168484614581565b610df157604051638baa579f60e01b815260040160405180910390fd5b6060815f018054806020026020016040519081016040528092919081815260200182805480156143ad57602002820191905f5260205f20905b815481526020019060010190808311614399575b50505050509050919050565b610fb58383836145d5565b5f81815260018301602052604081205461440957508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556117c3565b505f6117c3565b81545f90801561444d5761443684614429600184615a61565b5f91825260209091200190565b5464010000000090046001600160e01b031661186b565b509092915050565b82545f9081614466868683856146db565b905080156144945761447d86614429600184615a61565b5464010000000090046001600160e01b031661088d565b5091949350505050565b5f8181526001830160205260408120548015614578575f6144c0600183615a61565b85549091505f906144d390600190615a61565b9050818114614532575f865f0182815481106144f1576144f161568b565b905f5260205f200154905080875f0184815481106145115761451161568b565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061454357614543615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506117c3565b5f9150506117c3565b5f5f5f61458e858561472e565b90925090505f8160048111156145a6576145a6615ae9565b1480156145c45750856001600160a01b0316826001600160a01b0316145b8061088d575061088d86868661476d565b8254801561468d575f6145ed85614429600185615a61565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156146405760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff80861691160361468b578261466186614429600186615a61565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b818310156119ba575f6146f08484614854565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561471a57809250614728565b61472581600161575f565b93505b506146dd565b5f5f8251604103614762576020830151604084015160608501515f1a6147568782858561486e565b94509450505050611e73565b505f90506002611e73565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614795929190615b7d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516147d39190615b95565b5f60405180830381855afa9150503d805f811461480b576040519150601f19603f3d011682016040523d82523d5f602084013e614810565b606091505b509150915081801561482457506020815110155b801561088d57508051630b135d3f60e11b9061484990830160209081019084016158dd565b149695505050505050565b5f6148626002848418615bab565b610c9c9084841661575f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148a357505f90506003614922565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156148f4573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661491c575f60019250925050614922565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f209081019282156149d7579160200282015b828111156149d757825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906149a2565b506149e3929150614a37565b5090565b828054828255905f5260205f209081019282156149d7579160200282015b828111156149d7578251825591602001919060010190614a05565b5080545f8255905f5260205f209081019061239f91905b5b808211156149e3575f8155600101614a38565b6001600160a01b038116811461239f575f5ffd5b8035611f9e81614a4b565b5f5f5f5f5f60a08688031215614a7e575f5ffd5b8535614a8981614a4b565b94506020860135614a9981614a4b565b93506040860135614aa981614a4b565b94979396509394606081013594506080013592915050565b5f5f83601f840112614ad1575f5ffd5b5081356001600160401b03811115614ae7575f5ffd5b6020830191508360208260051b8501011115611e73575f5ffd5b5f5f60208385031215614b12575f5ffd5b82356001600160401b03811115614b27575f5ffd5b614b3385828601614ac1565b90969095509350505050565b602080825282518282018190525f918401906040840190835b81811015612542578351835260209384019390920191600101614b58565b5f60208284031215614b86575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614bc357614bc3614b8d565b60405290565b604080519081016001600160401b0381118282101715614bc357614bc3614b8d565b604051601f8201601f191681016001600160401b0381118282101715614c1357614c13614b8d565b604052919050565b5f6001600160401b03821115614c3357614c33614b8d565b5060051b60200190565b5f82601f830112614c4c575f5ffd5b8135614c5f614c5a82614c1b565b614beb565b8082825260208201915060208360051b860101925085831115614c80575f5ffd5b602085015b83811015614ca6578035614c9881614a4b565b835260209283019201614c85565b5095945050505050565b5f82601f830112614cbf575f5ffd5b8135614ccd614c5a82614c1b565b8082825260208201915060208360051b860101925085831115614cee575f5ffd5b602085015b83811015614ca6578035835260209283019201614cf3565b5f5f5f60608486031215614d1d575f5ffd5b8335614d2881614a4b565b925060208401356001600160401b03811115614d42575f5ffd5b614d4e86828701614c3d565b92505060408401356001600160401b03811115614d69575f5ffd5b614d7586828701614cb0565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614daf578151865260209586019590910190600101614d91565b5093949350505050565b602081525f610c9c6020830184614d7f565b803563ffffffff81168114611f9e575f5ffd5b5f5f83601f840112614dee575f5ffd5b5081356001600160401b03811115614e04575f5ffd5b602083019150836020828501011115611e73575f5ffd5b5f5f5f5f60608587031215614e2e575f5ffd5b8435614e3981614a4b565b9350614e4760208601614dcb565b925060408501356001600160401b03811115614e61575f5ffd5b614e6d87828801614dde565b95989497509550505050565b5f5f5f5f60808587031215614e8c575f5ffd5b8435614e9781614a4b565b93506020850135614ea781614a4b565b93969395505050506040820135916060013590565b5f60208284031215614ecc575f5ffd5b8135610c9c81614a4b565b5f5f60408385031215614ee8575f5ffd5b8235614ef381614a4b565b91506020830135614f0381614a4b565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c9c6020830184614f0e565b5f60e08284031215614f5e575f5ffd5b614f66614ba1565b9050614f7182614a5f565b8152614f7f60208301614a5f565b6020820152614f9060408301614a5f565b604082015260608281013590820152614fab60808301614dcb565b608082015260a08201356001600160401b03811115614fc8575f5ffd5b614fd484828501614c3d565b60a08301525060c08201356001600160401b03811115614ff2575f5ffd5b614ffe84828501614cb0565b60c08301525092915050565b5f6020828403121561501a575f5ffd5b81356001600160401b0381111561502f575f5ffd5b61186b84828501614f4e565b5f6020828403121561504b575f5ffd5b813560ff81168114610c9c575f5ffd5b6001600160401b038116811461239f575f5ffd5b5f5f5f5f5f5f86880360e0811215615085575f5ffd5b873561509081614a4b565b96506040601f19820112156150a3575f5ffd5b506020870194506060870135935060808701356150bf81614a4b565b925060a08701356150cf8161505b565b915060c08701356150df8161505b565b809150509295509295509295565b5f8151808452602084019350602083015f5b82811015614daf5781516001600160a01b03168652602095860195909101906001016150ff565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916151719085018263ffffffff169052565b5060a082015160e060a085015261518b60e08501826150ed565b905060c083015184820360c08601526140888282614d7f565b604081525f6151b66040830185615126565b82810360208401526140888185614d7f565b5f82825180855260208501945060208160051b830101602085015f5b8381101561420757601f19858403018852615200838351614d7f565b60209889019890935091909101906001016151e4565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b8281101561526d57605f19878603018452615258858351615126565b9450602093840193919091019060010161523c565b50505050828103602084015261408881856151c8565b5f5f5f60608486031215615295575f5ffd5b83356152a081614a4b565b92506020840135915060408401356152b78161505b565b809150509250925092565b604081525f6151b660408301856150ed565b5f5f5f604084860312156152e6575f5ffd5b83356152f181614a4b565b925060208401356001600160401b0381111561530b575f5ffd5b61531786828701614dde565b9497909650939450505050565b5f5f60408385031215615335575f5ffd5b823561534081614a4b565b915060208301356001600160401b0381111561535a575f5ffd5b61536685828601614c3d565b9150509250929050565b5f5f5f5f5f5f60608789031215615385575f5ffd5b86356001600160401b0381111561539a575f5ffd5b6153a689828a01614ac1565b90975095505060208701356001600160401b038111156153c4575f5ffd5b6153d089828a01614ac1565b90955093505060408701356001600160401b038111156153ee575f5ffd5b6153fa89828a01614ac1565b979a9699509497509295939492505050565b602081525f610c9c6020830184615126565b5f5f5f60608486031215615430575f5ffd5b833561543b81614a4b565b925060208401356001600160401b03811115615455575f5ffd5b840160408187031215615466575f5ffd5b61546e614bc9565b81356001600160401b03811115615483575f5ffd5b8201601f81018813615493575f5ffd5b80356001600160401b038111156154ac576154ac614b8d565b6154bf601f8201601f1916602001614beb565b8181528960208385010111156154d3575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f60408385031215615516575f5ffd5b823561552181614a4b565b946020939093013593505050565b604081525f6151b66040830185614d7f565b801515811461239f575f5ffd5b5f5f5f5f60608587031215615561575f5ffd5b84356001600160401b03811115615576575f5ffd5b850160e08188031215615587575f5ffd5b935060208501356001600160401b038111156155a1575f5ffd5b6155ad87828801614ac1565b90945092505060408501356155c181615541565b939692955090935050565b5f5f604083850312156155dd575f5ffd5b82356001600160401b038111156155f2575f5ffd5b8301601f81018513615602575f5ffd5b8035615610614c5a82614c1b565b8082825260208201915060208360051b850101925087831115615631575f5ffd5b6020840193505b8284101561565c57833561564b81614a4b565b825260209384019390910190615638565b945050505060208301356001600160401b0381111561535a575f5ffd5b602081525f610c9c60208301846151c8565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126156b3575f5ffd5b9190910192915050565b5f5f8335601e198436030181126156d2575f5ffd5b8301803591506001600160401b038211156156eb575f5ffd5b6020019150600581901b3603821315611e73575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615740575f5ffd5b8151610c9c8161505b565b634e487b7160e01b5f52601160045260245ffd5b808201808211156117c3576117c361574b565b60a08101853561578181614a4b565b6001600160a01b0316825263ffffffff61579d60208801614dcb565b16602083015260408201949094526001600160a01b03929092166060830152608090910152919050565b5f82601f8301126157d6575f5ffd5b81516157e4614c5a82614c1b565b8082825260208201915060208360051b860101925085831115615805575f5ffd5b602085015b83811015614ca657805183526020928301920161580a565b5f5f60408385031215615833575f5ffd5b82516001600160401b03811115615848575f5ffd5b8301601f81018513615858575f5ffd5b8051615866614c5a82614c1b565b8082825260208201915060208360051b850101925087831115615887575f5ffd5b6020840193505b828410156158b25783516158a181614a4b565b82526020938401939091019061588e565b8095505050505060208301516001600160401b038111156158d1575f5ffd5b615366858286016157c7565b5f602082840312156158ed575f5ffd5b5051919050565b5f823560de198336030181126156b3575f5ffd5b5f6117c33683614f4e565b5f60208284031215615923575f5ffd5b8135610c9c81615541565b6001600160a01b03831681526040602082018190525f9061186b908301846150ed565b5f60208284031215615961575f5ffd5b81516001600160401b03811115615976575f5ffd5b8201601f81018413615986575f5ffd5b8051615994614c5a82614c1b565b8082825260208201915060208360051b8501019250868311156159b5575f5ffd5b6020840193505b8284101561088d5783516159cf8161505b565b8252602093840193909101906159bc565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615a1557615a1561574b565b5060010190565b838152606060208201525f615a346060830185615126565b828103604084015261088d8185614d7f565b5f60208284031215615a56575f5ffd5b8151610c9c81615541565b818103818111156117c3576117c361574b565b63ffffffff82811682821603908111156117c3576117c361574b565b63ffffffff81811683821601908111156117c3576117c361574b565b5f5f60408385031215615abd575f5ffd5b505080516020909101519092909150565b5f60208284031215615ade575f5ffd5b8151610c9c81614a4b565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156117c3576117c361574b565b6001600160a01b03841681526060602082018190525f90615b53908301856150ed565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f61186b6040830184614f0e565b5f82518060208501845e5f920191825250919050565b5f82615bc557634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220283a0a4f383d9daac7229b580defe060026a3ab9e204f046a0718b60a5ba843a64736f6c634300081e0033", + Bin: "0x610160604052348015610010575f5ffd5b5060405161605338038061605383398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615bfd6104565f395f8181610fc10152613dec01525f81816104120152613a7a01525f8181610703015281816131c7015281816134bd015261367601525f818161075301528181610cf301528181610eb60152818161103901528181611392015281816117f401528181612446015261414c01525f818161043901528181610e34015281816112f10152818161156501528181612d3701528181612f18015261333101525f818161036f01528181610e02015281816114b9015261330b01525f81816105e201528181612afd0152613e5b0152615bfd5ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636d70f7ae1161017b578063bb45fef2116100e4578063e4cc3f901161009e578063f698da2511610079578063f698da25146107ce578063fabc1cbc146107d6578063fd8aa88d146107e9578063fe4b84df146107fc575f5ffd5b8063e4cc3f9014610788578063eea9064b1461079b578063f0e0e676146107ae575f5ffd5b8063bb45fef2146106b9578063bfae3fd2146106e6578063c448feb8146106f9578063c978f7ac1461072d578063ca8aa7c71461074e578063da8be86414610775575f5ffd5b80639104c319116101355780639104c319146106175780639435bb431461063257806399f5371b14610645578063a178848414610665578063a33a343314610684578063b7f06ebe14610697575f5ffd5b80636d70f7ae1461057a5780636e1744481461058d578063778e55f3146105a057806378296ec5146105ca578063886f1195146105dd5780639004134714610604575f5ffd5b806354b7c96c1161021d5780635c975abb116101d75780635c975abb146104d45780635d975e88146104dc5780635dd68579146104fd57806360a0d1ce1461051e57806365da12641461053157806366d5ba9314610559575f5ffd5b806354b7c96c1461045b57806354fd4d501461046e578063595c6a6714610483578063597b36da1461048b5780635ac86ab71461049e5780635ae679a7146104c1575f5ffd5b806339b70e381161026e57806339b70e381461036a5780633c651cf2146103a95780633cdeb5e0146103bc5780633e28391d146103ea5780634657e26a1461040d5780634665bcda14610434575f5ffd5b806304a4f979146102b55780630b9f487a146102ef5780630dd8dd0214610302578063136439dd1461032257806325df922e146103375780632aa6d88814610357575b5f5ffd5b6102dc7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b6102dc6102fd366004614a86565b61080f565b610315610310366004614b1d565b610897565b6040516102e69190614b5b565b610335610330366004614b92565b610b09565b005b61034a610345366004614d27565b610b43565b6040516102e69190614dd5565b610335610365366004614e37565b610ca3565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102e6565b6103356103b7366004614e95565b610df7565b6103916103ca366004614ed8565b6001600160a01b039081165f908152609960205260409020600101541690565b6103fd6103f8366004614ed8565b610f4a565b60405190151581526020016102e6565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b610335610469366004614ef3565b610f69565b610476610fba565b6040516102e69190614f58565b610335610fea565b6102dc610499366004615026565b610ffe565b6103fd6104ac366004615057565b606654600160ff9092169190911b9081161490565b6102dc6104cf36600461508b565b61102d565b6066546102dc565b6104ef6104ea366004614b92565b61119f565b6040516102e69291906151c0565b61051061050b366004614ed8565b6111bc565b6040516102e6929190615232565b61033561052c36600461529f565b6112e6565b61039161053f366004614ed8565b609a6020525f90815260409020546001600160a01b031681565b61056c610567366004614ed8565b611491565b6040516102e69291906152de565b6103fd610588366004614ed8565b611791565b6102dc61059b366004614ef3565b6117c9565b6102dc6105ae366004614ef3565b609860209081525f928352604080842090915290825290205481565b6103356105d83660046152f0565b611873565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b61034a610612366004615340565b6118ec565b61039173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61033561064036600461538c565b6119c2565b610658610653366004614b92565b611a7d565b6040516102e69190615428565b6102dc610673366004614ed8565b609f6020525f908152604090205481565b61031561069236600461543a565b611b99565b6103fd6106a5366004614b92565b609e6020525f908152604090205460ff1681565b6103fd6106c7366004615521565b609c60209081525f928352604080842090915290825290205460ff1681565b6102dc6106f4366004614ef3565b611bb1565b60405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016102e6565b61074061073b366004615340565b611bed565b6040516102e692919061554b565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b610315610783366004614ed8565b611e7a565b61033561079636600461556a565b611fa3565b6103356107a936600461543a565b611fdb565b6107c16107bc3660046155e8565b612046565b6040516102e69190615695565b6102dc6120eb565b6103356107e4366004614b92565b6121a4565b6103156107f7366004614ed8565b612212565b61033561080a366004614b92565b612235565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f9061088d9060e00160405160208183030381529060405280519060200120612346565b9695505050505050565b606060016108a481612374565b6108ac6123a2565b5f836001600160401b038111156108c5576108c5614ba9565b6040519080825280602002602001820160405280156108ee578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610afa57868682818110610928576109286156a7565b905060200281019061093a91906156bb565b6109489060208101906156d9565b905087878381811061095c5761095c6156a7565b905060200281019061096e91906156bb565b61097890806156d9565b905014610998576040516343714afd60e01b815260040160405180910390fd5b5f610a0233848a8a868181106109b0576109b06156a7565b90506020028101906109c291906156bb565b6109cc90806156d9565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506123fb92505050565b9050610ad433848a8a86818110610a1b57610a1b6156a7565b9050602002810190610a2d91906156bb565b610a3790806156d9565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610a7c57610a7c6156a7565b9050602002810190610a8e91906156bb565b610a9c9060208101906156d9565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525088925061254d915050565b848381518110610ae657610ae66156a7565b60209081029190910101525060010161090e565b5050600160c955949350505050565b610b11612ae8565b6066548181168114610b365760405163c61dca5d60e01b815260040160405180910390fd5b610b3f82612b8b565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610b6c8683876123fb565b90505f85516001600160401b03811115610b8857610b88614ba9565b604051908082528060200260200182016040528015610bb1578160200160208202803683370190505b5090505f5b8651811015610c96576001600160a01b0388165f90815260a260205260408120885182908a9085908110610bec57610bec6156a7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610c70878381518110610c3e57610c3e6156a7565b6020026020010151858481518110610c5857610c586156a7565b602002602001015183612bc89092919063ffffffff16565b838381518110610c8257610c826156a7565b602090810291909101015250600101610bb6565b50925050505b9392505050565b610cab6123a2565b610cb433610f4a565b15610cd257604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610d3c575f5ffd5b505af1158015610d4e573d5f5f3e3d5ffd5b50505050610d5c3385612be6565b610d663333612c48565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610ddf92919061571e565b60405180910390a2610df1600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610e565750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610e735760405163045206a560e21b815260040160405180910390fd5b610e7b6123a2565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015610efb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1f919061574c565b90505f610f2d878784612ed1565b9050610f3d838888888886612fb3565b505050610df1600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b81610f73816130f8565b610f7b6123a2565b610f8483611791565b610fa1576040516325ec6c1f60e01b815260040160405180910390fd5b610fab8383612be6565b610fb5600160c955565b505050565b6060610fe57f000000000000000000000000000000000000000000000000000000000000000061311e565b905090565b610ff2612ae8565b610ffc5f19612b8b565b565b5f816040516020016110109190615428565b604051602081830303815290604052805190602001209050919050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611077576040516323d871a560e01b815260040160405180910390fd5b61107f6123a2565b6001600160a01b038088165f9081526098602090815260408083209388168352929052908120546110bd906001600160401b0380871690861661315b565b90505f6110cc89878787613173565b90506110d8818361577b565b92506110e6895f888561326a565b604080516001600160a01b038881168252602082018690528b16917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a2611135866132e4565b6001600160a01b0316633fb99ca5898989876040518563ffffffff1660e01b8152600401611166949392919061578e565b5f604051808303815f87803b15801561117d575f5ffd5b505af115801561118f573d5f5f3e3d5ffd5b50505050505061088d600160c955565b6111a7614947565b60606111b283613356565b9094909350915050565b6060805f6111c984612212565b8051909150806001600160401b038111156111e6576111e6614ba9565b60405190808252806020026020018201604052801561121f57816020015b61120c614947565b8152602001906001900390816112045790505b509350806001600160401b0381111561123a5761123a614ba9565b60405190808252806020026020018201604052801561126d57816020015b60608152602001906001900390816112585790505b5092505f5b818110156112de5761129c83828151811061128f5761128f6156a7565b6020026020010151613356565b8683815181106112ae576112ae6156a7565b602002602001018684815181106112c7576112c76156a7565b602090810291909101019190915252600101611272565b505050915091565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461132f57604051633213a66160e21b815260040160405180910390fd5b6113376123a2565b61134083610f4a565b15610fab576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156113d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fb919061574c565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0845282528083208151928301909152548152919250611461866114596001600160401b038087169089166135a9565b8491906135bd565b9050611483848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08461326a565b50505050610fb5600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156114fd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611524919081019061583e565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa1580156115aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906158f9565b9050805f036115e257509094909350915050565b5f835160016115f1919061577b565b6001600160401b0381111561160857611608614ba9565b604051908082528060200260200182016040528015611631578160200160208202803683370190505b5090505f84516001611643919061577b565b6001600160401b0381111561165a5761165a614ba9565b604051908082528060200260200182016040528015611683578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106116ae576116ae6156a7565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106116e2576116e26156a7565b60209081029190910101525f5b85518110156117835785818151811061170a5761170a6156a7565b6020026020010151838281518110611724576117246156a7565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110611756576117566156a7565b6020026020010151828281518110611770576117706156a7565b60209081029190910101526001016116ef565b509097909650945050505050565b5f6001600160a01b038216158015906117c357506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611839573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061185d919061574c565b905061186b8484835f613173565b949350505050565b8261187d816130f8565b61188684611791565b6118a3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b670809084846040516118de92919061571e565b60405180910390a250505050565b60605f82516001600160401b0381111561190857611908614ba9565b604051908082528060200260200182016040528015611931578160200160208202803683370190505b5090505f5b83518110156119ba576001600160a01b0385165f908152609860205260408120855190919086908490811061196d5761196d6156a7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20548282815181106119a7576119a76156a7565b6020908102919091010152600101611936565b509392505050565b60026119cd81612374565b6119d56123a2565b855f5b81811015611a6857611a608989838181106119f5576119f56156a7565b9050602002810190611a079190615910565b611a1090615924565b888884818110611a2257611a226156a7565b9050602002810190611a3491906156d9565b888886818110611a4657611a466156a7565b9050602002016020810190611a5b919061592f565b6135db565b6001016119d8565b5050611a74600160c955565b50505050505050565b611a85614947565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611b3357602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611b15575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611b8957602002820191905f5260205f20905b815481526020019060010190808311611b75575b5050505050815250509050919050565b6060611ba433611e7a565b9050610c9c848484611fdb565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610c9c90613a1d565b60608082516001600160401b03811115611c0957611c09614ba9565b604051908082528060200260200182016040528015611c32578160200160208202803683370190505b50915082516001600160401b03811115611c4e57611c4e614ba9565b604051908082528060200260200182016040528015611c77578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ca28683876123fb565b90505f5b8551811015611e6f575f611cd2878381518110611cc557611cc56156a7565b60200260200101516132e4565b9050806001600160a01b031663fe243a1789898581518110611cf657611cf66156a7565b60200260200101516040518363ffffffff1660e01b8152600401611d309291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611d4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6f91906158f9565b858381518110611d8157611d816156a7565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f898581518110611dc457611dc46156a7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050611e48868481518110611e1657611e166156a7565b6020026020010151858581518110611e3057611e306156a7565b6020026020010151836135bd9092919063ffffffff16565b878481518110611e5a57611e5a6156a7565b60209081029190910101525050600101611ca6565b5050505b9250929050565b6060611e846123a2565b611e8d82610f4a565b611eaa5760405163a5c7c44560e01b815260040160405180910390fd5b611eb382611791565b15611ed1576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b03831614611f89576001600160a01b038083165f908152609a602052604090205416611f0481613a3c565b80611f2a57506001600160a01b038181165f908152609960205260409020600101541633145b611f4757604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b611f9282613ae5565b9050611f9e600160c955565b919050565b6002611fae81612374565b611fb66123a2565b611fca611fc286615924565b8585856135db565b611fd4600160c955565b5050505050565b611fe36123a2565b611fec33610f4a565b1561200a57604051633bf2b50360e11b815260040160405180910390fd5b61201383611791565b612030576040516325ec6c1f60e01b815260040160405180910390fd5b61203c33848484613d25565b610fab3384612c48565b60605f83516001600160401b0381111561206257612062614ba9565b60405190808252806020026020018201604052801561209557816020015b60608152602001906001900390816120805790505b5090505f5b84518110156119ba576120c68582815181106120b8576120b86156a7565b6020026020010151856118ec565b8282815181106120d8576120d86156a7565b602090810291909101015260010161209a565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612158613de4565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6121ac613e59565b606654801982198116146121d35760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906117c390613f0a565b5f54610100900460ff161580801561225357505f54600160ff909116105b8061226c5750303b15801561226c57505f5460ff166001145b6122d45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156122f5575f805461ff0019166101001790555b6122fe82612b8b565b8015610b3f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f61234f6120eb565b60405161190160f01b6020820152602281019190915260428101839052606201611010565b606654600160ff83161b9081160361239f5760405163840a48d560e01b815260040160405180910390fd5b50565b600260c954036123f45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016122cb565b600260c955565b60605f82516001600160401b0381111561241757612417614ba9565b604051908082528060200260200182016040528015612440578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b815260040161249292919061594a565b5f60405180830381865afa1580156124ac573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124d3919081019061596d565b90505f5b84518110156125425761251d878683815181106124f6576124f66156a7565b6020026020010151848481518110612510576125106156a7565b6020026020010151612ed1565b83828151811061252f5761252f6156a7565b60209081029190910101526001016124d7565b509095945050505050565b5f6001600160a01b038616612575576040516339b190bb60e11b815260040160405180910390fd5b83515f036125965760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b038111156125b0576125b0614ba9565b6040519080825280602002602001820160405280156125d9578160200160208202803683370190505b5090505f85516001600160401b038111156125f6576125f6614ba9565b60405190808252806020026020018201604052801561261f578160200160208202803683370190505b5090505f5b865181101561291b575f612643888381518110611cc557611cc56156a7565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a858151811061267c5761267c6156a7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2090506126f58884815181106126ba576126ba6156a7565b60200260200101518885815181106126d4576126d46156a7565b602090810291909101810151604080519283019052845482529091906135bd565b848481518110612707576127076156a7565b602002602001018181525050612746888481518110612728576127286156a7565b60209081029190910181015160408051928301905283548252613f16565b858481518110612758576127586156a7565b60209081029190910101526001600160a01b038a16156127ed576127af8a8a8581518110612788576127886156a7565b60200260200101518786815181106127a2576127a26156a7565b6020026020010151613f2a565b6127ed8a8c8b86815181106127c6576127c66156a7565b60200260200101518787815181106127e0576127e06156a7565b602002602001015161326a565b5f826001600160a01b031663724af4238d8c8781518110612810576128106156a7565b60200260200101518c888151811061282a5761282a6156a7565b60200260200101516040518463ffffffff1660e01b8152600401612850939291906159fc565b6020604051808303815f875af115801561286c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061289091906158f9565b9050805f0361290d575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b86815181106128d0576128d06156a7565b60200260200101516128f5856040518060200160405290815f82015481525050613a1d565b604051612904939291906159fc565b60405180910390a15b505050806001019050612624565b506001600160a01b0388165f908152609f6020526040812080549182919061294283615a20565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f6129a882610ffe565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612a5e92600585019201906149a0565b5060c08201518051612a7a916006840191602090910190614a03565b5050506001600160a01b038b165f90815260a360205260409020612a9e9082613f94565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612ad293929190615a38565b60405180910390a19a9950505050505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015612b4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b6e9190615a62565b610ffc57604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61186b82612be0612bd987613a1d565b8690613f9f565b90613f9f565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c69101612206565b5f612c5281612374565b5f5f612c5d85611491565b915091505f612c6d5f86856123fb565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611a745773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612d0057612d006156a7565b60200260200101516001600160a01b031603612e705760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015612d7e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612da2919061574c565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f878581518110612ddb57612ddb6156a7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050612e4f858481518110612e2d57612e2d6156a7565b6020026020010151836001600160401b0316836135bd9092919063ffffffff16565b858481518110612e6157612e616156a7565b60200260200101818152505050505b612ec98688868481518110612e8757612e876156a7565b60200260200101515f878681518110612ea257612ea26156a7565b6020026020010151878781518110612ebc57612ebc6156a7565b6020026020010151612fb3565b600101612cc7565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b03841601612fa35760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015612f5f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f83919061574c565b9050612f9b6001600160401b038481169083166135a9565b915050610c9c565b506001600160401b031692915050565b805f03612fd357604051630a33bc6960e21b815260040160405180910390fd5b81156130f0576001600160a01b038086165f90815260a26020908152604080832093881683529290522061300981858585613fb3565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061304790613a1d565b604051613056939291906159fc565b60405180910390a161306786610f4a565b15611a74576001600160a01b038088165f908152609860209081526040808320938916835292905290812080548592906130a290849061577b565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516130e6939291906159fc565b60405180910390a2505b505050505050565b61310181613a3c565b61239f5760405163932d94f760e01b815260040160405180910390fd5b60605f61312a83614049565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f6131698483856001614070565b61186b9085615a7d565b5f826001600160401b03165f0361318b57505f61186b565b6001600160a01b038086165f90815260a56020908152604080832093881683529290529081206131ba906140cb565b90505f61322060016131ec7f000000000000000000000000000000000000000000000000000000000000000043615a90565b6131f69190615a90565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906140e5565b90505f61322d8284615a7d565b905061325e613245826001600160401b0389166135a9565b876001600160401b0316876001600160401b031661315b565b98975050505050505050565b6001600160a01b038085165f908152609860209081526040808320938616835292905290812080548392906132a0908490615a7d565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd8484846040516118de939291906159fc565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461332f577f00000000000000000000000000000000000000000000000000000000000000006117c3565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b61335e614947565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561341057602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116133f2575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561346657602002820191905f5260205f20905b815481526020019060010190808311613452575b50505050508152505091508160a00151516001600160401b0381111561348e5761348e614ba9565b6040519080825280602002602001820160405280156134b7578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516134eb9190615aac565b90505f4363ffffffff168263ffffffff161061351c57613517845f015185602001518660a001516123fb565b613533565b613533845f015185602001518660a0015185614101565b90505f5b8460a00151518110156112de576135848560c00151828151811061355d5761355d6156a7565b6020026020010151838381518110613577576135776156a7565b602002602001015161422f565b848281518110613596576135966156a7565b6020908102919091010152600101613537565b5f610c9c8383670de0b6b3a764000061423a565b5f61186b826135d56135ce87613a1d565b86906135a9565b906135a9565b60a0840151518214613600576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613636576040516316110d3560e21b815260040160405180910390fd5b5f61364085610ffe565b5f818152609e602052604090205490915060ff16613671576040516387c9d21960e01b815260040160405180910390fd5b60605f7f000000000000000000000000000000000000000000000000000000000000000087608001516136a49190615aac565b90508063ffffffff164363ffffffff16116136d2576040516378f67ae160e11b815260040160405180910390fd5b6136e9875f015188602001518960a0015184614101565b87516001600160a01b03165f90815260a36020526040902090925061370f91508361431f565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff19169055906137666005830182614a3c565b613773600683015f614a3c565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00906137bc9084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a015191909316926137f69184906123fb565b90505f5b8860a0015151811015613a12575f6138218a60a001518381518110611cc557611cc56156a7565b90505f6138578b60c00151848151811061383d5761383d6156a7565b6020026020010151878581518110613577576135776156a7565b9050805f03613867575050613a0a565b871561393557816001600160a01b0316632eae418c8c5f01518d60a001518681518110613896576138966156a7565b60200260200101518d8d888181106138b0576138b06156a7565b90506020020160208101906138c59190614ed8565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b15801561391a575f5ffd5b505af115801561392c573d5f5f3e3d5ffd5b50505050613a07565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613960576139606156a7565b6020026020010151866040518463ffffffff1660e01b8152600401613987939291906159fc565b60408051808303815f875af11580156139a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139c69190615ac8565b91509150613a04878e5f01518f60a0015188815181106139e8576139e86156a7565b602002602001015185858b8b81518110612ebc57612ebc6156a7565b50505b50505b6001016137fa565b505050505050505050565b80515f9015613a2d5781516117c3565b670de0b6b3a764000092915050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb890608401602060405180830381865afa158015613ac1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c39190615a62565b60606001613af281612374565b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613b5186611491565b9150915081515f03613b6557505050613d1f565b81516001600160401b03811115613b7e57613b7e614ba9565b604051908082528060200260200182016040528015613ba7578160200160208202803683370190505b5094505f613bb68785856123fb565b90505f5b8351811015613d19576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613c3a57613c3a6156a7565b6020026020010151835f81518110613c5457613c546156a7565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613c8657613c866156a7565b6020026020010151825f81518110613ca057613ca06156a7565b602002602001018181525050848481518110613cbe57613cbe6156a7565b6020026020010151815f81518110613cd857613cd86156a7565b602002602001018181525050613cf18b8985858561254d565b8a8581518110613d0357613d036156a7565b6020908102919091010152505050600101613bba565b50505050505b50919050565b6001600160a01b038084165f908152609960205260409020600101541680613d4d5750610df1565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff1615613d9157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff19166001179055830151611fd4908290613dd890889088908490889061080f565b8551602087015161432a565b60605f613e107f000000000000000000000000000000000000000000000000000000000000000061311e565b9050805f81518110613e2457613e246156a7565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ed99190615aea565b6001600160a01b0316336001600160a01b031614610ffc5760405163794821ff60e01b815260040160405180910390fd5b60605f610c9c8361437c565b5f610c9c613f2384613a1d565b83906135a9565b6001600160a01b038084165f90815260a5602090815260408083209386168352929052908120613f59906140cb565b9050610df143613f69848461577b565b6001600160a01b038088165f90815260a560209081526040808320938a1683529290522091906143d5565b5f610c9c83836143e0565b5f610c9c83670de0b6b3a76400008461423a565b825f03613fdf57604080516020810190915284548152613fd8908290612be090613a1d565b8455610df1565b6040805160208101909152845481525f90613ffb9085846135bd565b90505f614008848361577b565b90505f61402384612be061401c888a61577b565b8590613f9f565b80885590505f819003611a745760405163172cec7360e31b815260040160405180910390fd5b5f60ff8216601f8111156117c357604051632cd44ac360e21b815260040160405180910390fd5b5f5f61407d86868661423a565b9050600183600281111561409357614093615b05565b1480156140af57505f84806140aa576140aa615b19565b868809115b156140c2576140bf60018261577b565b90505b95945050505050565b5f6140d6828261442c565b6001600160e01b031692915050565b5f6140f1838383614471565b6001600160e01b03169392505050565b60605f83516001600160401b0381111561411d5761411d614ba9565b604051908082528060200260200182016040528015614146578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b815260040161419a93929190615b2d565b5f60405180830381865afa1580156141b4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526141db919081019061596d565b90505f5b8551811015614223576141fe888783815181106124f6576124f66156a7565b838281518110614210576142106156a7565b60209081029190910101526001016141df565b50909695505050505050565b5f610c9c83836135a9565b5f80805f19858709858702925082811083820303915050805f036142715783828161426757614267615b19565b0492505050610c9c565b8084116142b85760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016122cb565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610c9c83836144ba565b4281101561434b57604051630819bdcd60e01b815260040160405180910390fd5b61435f6001600160a01b038516848461459d565b610df157604051638baa579f60e01b815260040160405180910390fd5b6060815f018054806020026020016040519081016040528092919081815260200182805480156143c957602002820191905f5260205f20905b8154815260200190600101908083116143b5575b50505050509050919050565b610fb58383836145f1565b5f81815260018301602052604081205461442557508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556117c3565b505f6117c3565b81545f9080156144695761445284614445600184615a7d565b5f91825260209091200190565b5464010000000090046001600160e01b031661186b565b509092915050565b82545f9081614482868683856146f7565b905080156144b05761449986614445600184615a7d565b5464010000000090046001600160e01b031661088d565b5091949350505050565b5f8181526001830160205260408120548015614594575f6144dc600183615a7d565b85549091505f906144ef90600190615a7d565b905081811461454e575f865f01828154811061450d5761450d6156a7565b905f5260205f200154905080875f01848154811061452d5761452d6156a7565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061455f5761455f615b66565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506117c3565b5f9150506117c3565b5f5f5f6145aa858561474a565b90925090505f8160048111156145c2576145c2615b05565b1480156145e05750856001600160a01b0316826001600160a01b0316145b8061088d575061088d868686614789565b825480156146a9575f61460985614445600185615a7d565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b03166020840152919250908516101561465c5760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036146a7578261467d86614445600186615a7d565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b818310156119ba575f61470c8484614870565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561473657809250614744565b61474181600161577b565b93505b506146f9565b5f5f825160410361477e576020830151604084015160608501515f1a6147728782858561488a565b94509450505050611e73565b505f90506002611e73565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016147b1929190615b7a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516147ef9190615b92565b5f60405180830381855afa9150503d805f8114614827576040519150601f19603f3d011682016040523d82523d5f602084013e61482c565b606091505b509150915081801561484057506020815110155b801561088d57508051630b135d3f60e11b9061486590830160209081019084016158f9565b149695505050505050565b5f61487e6002848418615ba8565b610c9c9084841661577b565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148bf57505f9050600361493e565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614910573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614938575f6001925092505061493e565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f209081019282156149f3579160200282015b828111156149f357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906149be565b506149ff929150614a53565b5090565b828054828255905f5260205f209081019282156149f3579160200282015b828111156149f3578251825591602001919060010190614a21565b5080545f8255905f5260205f209081019061239f91905b5b808211156149ff575f8155600101614a54565b6001600160a01b038116811461239f575f5ffd5b8035611f9e81614a67565b5f5f5f5f5f60a08688031215614a9a575f5ffd5b8535614aa581614a67565b94506020860135614ab581614a67565b93506040860135614ac581614a67565b94979396509394606081013594506080013592915050565b5f5f83601f840112614aed575f5ffd5b5081356001600160401b03811115614b03575f5ffd5b6020830191508360208260051b8501011115611e73575f5ffd5b5f5f60208385031215614b2e575f5ffd5b82356001600160401b03811115614b43575f5ffd5b614b4f85828601614add565b90969095509350505050565b602080825282518282018190525f918401906040840190835b81811015612542578351835260209384019390920191600101614b74565b5f60208284031215614ba2575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614bdf57614bdf614ba9565b60405290565b604080519081016001600160401b0381118282101715614bdf57614bdf614ba9565b604051601f8201601f191681016001600160401b0381118282101715614c2f57614c2f614ba9565b604052919050565b5f6001600160401b03821115614c4f57614c4f614ba9565b5060051b60200190565b5f82601f830112614c68575f5ffd5b8135614c7b614c7682614c37565b614c07565b8082825260208201915060208360051b860101925085831115614c9c575f5ffd5b602085015b83811015614cc2578035614cb481614a67565b835260209283019201614ca1565b5095945050505050565b5f82601f830112614cdb575f5ffd5b8135614ce9614c7682614c37565b8082825260208201915060208360051b860101925085831115614d0a575f5ffd5b602085015b83811015614cc2578035835260209283019201614d0f565b5f5f5f60608486031215614d39575f5ffd5b8335614d4481614a67565b925060208401356001600160401b03811115614d5e575f5ffd5b614d6a86828701614c59565b92505060408401356001600160401b03811115614d85575f5ffd5b614d9186828701614ccc565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614dcb578151865260209586019590910190600101614dad565b5093949350505050565b602081525f610c9c6020830184614d9b565b803563ffffffff81168114611f9e575f5ffd5b5f5f83601f840112614e0a575f5ffd5b5081356001600160401b03811115614e20575f5ffd5b602083019150836020828501011115611e73575f5ffd5b5f5f5f5f60608587031215614e4a575f5ffd5b8435614e5581614a67565b9350614e6360208601614de7565b925060408501356001600160401b03811115614e7d575f5ffd5b614e8987828801614dfa565b95989497509550505050565b5f5f5f5f60808587031215614ea8575f5ffd5b8435614eb381614a67565b93506020850135614ec381614a67565b93969395505050506040820135916060013590565b5f60208284031215614ee8575f5ffd5b8135610c9c81614a67565b5f5f60408385031215614f04575f5ffd5b8235614f0f81614a67565b91506020830135614f1f81614a67565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c9c6020830184614f2a565b5f60e08284031215614f7a575f5ffd5b614f82614bbd565b9050614f8d82614a7b565b8152614f9b60208301614a7b565b6020820152614fac60408301614a7b565b604082015260608281013590820152614fc760808301614de7565b608082015260a08201356001600160401b03811115614fe4575f5ffd5b614ff084828501614c59565b60a08301525060c08201356001600160401b0381111561500e575f5ffd5b61501a84828501614ccc565b60c08301525092915050565b5f60208284031215615036575f5ffd5b81356001600160401b0381111561504b575f5ffd5b61186b84828501614f6a565b5f60208284031215615067575f5ffd5b813560ff81168114610c9c575f5ffd5b6001600160401b038116811461239f575f5ffd5b5f5f5f5f5f5f86880360e08112156150a1575f5ffd5b87356150ac81614a67565b96506040601f19820112156150bf575f5ffd5b506020870194506060870135935060808701356150db81614a67565b925060a08701356150eb81615077565b915060c08701356150fb81615077565b809150509295509295509295565b5f8151808452602084019350602083015f5b82811015614dcb5781516001600160a01b031686526020958601959091019060010161511b565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f9161518d9085018263ffffffff169052565b5060a082015160e060a08501526151a760e0850182615109565b905060c083015184820360c08601526140c28282614d9b565b604081525f6151d26040830185615142565b82810360208401526140c28185614d9b565b5f82825180855260208501945060208160051b830101602085015f5b8381101561422357601f1985840301885261521c838351614d9b565b6020988901989093509190910190600101615200565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b8281101561528957605f19878603018452615274858351615142565b94506020938401939190910190600101615258565b5050505082810360208401526140c281856151e4565b5f5f5f606084860312156152b1575f5ffd5b83356152bc81614a67565b92506020840135915060408401356152d381615077565b809150509250925092565b604081525f6151d26040830185615109565b5f5f5f60408486031215615302575f5ffd5b833561530d81614a67565b925060208401356001600160401b03811115615327575f5ffd5b61533386828701614dfa565b9497909650939450505050565b5f5f60408385031215615351575f5ffd5b823561535c81614a67565b915060208301356001600160401b03811115615376575f5ffd5b61538285828601614c59565b9150509250929050565b5f5f5f5f5f5f606087890312156153a1575f5ffd5b86356001600160401b038111156153b6575f5ffd5b6153c289828a01614add565b90975095505060208701356001600160401b038111156153e0575f5ffd5b6153ec89828a01614add565b90955093505060408701356001600160401b0381111561540a575f5ffd5b61541689828a01614add565b979a9699509497509295939492505050565b602081525f610c9c6020830184615142565b5f5f5f6060848603121561544c575f5ffd5b833561545781614a67565b925060208401356001600160401b03811115615471575f5ffd5b840160408187031215615482575f5ffd5b61548a614be5565b81356001600160401b0381111561549f575f5ffd5b8201601f810188136154af575f5ffd5b80356001600160401b038111156154c8576154c8614ba9565b6154db601f8201601f1916602001614c07565b8181528960208385010111156154ef575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f60408385031215615532575f5ffd5b823561553d81614a67565b946020939093013593505050565b604081525f6151d26040830185614d9b565b801515811461239f575f5ffd5b5f5f5f5f6060858703121561557d575f5ffd5b84356001600160401b03811115615592575f5ffd5b850160e081880312156155a3575f5ffd5b935060208501356001600160401b038111156155bd575f5ffd5b6155c987828801614add565b90945092505060408501356155dd8161555d565b939692955090935050565b5f5f604083850312156155f9575f5ffd5b82356001600160401b0381111561560e575f5ffd5b8301601f8101851361561e575f5ffd5b803561562c614c7682614c37565b8082825260208201915060208360051b85010192508783111561564d575f5ffd5b6020840193505b8284101561567857833561566781614a67565b825260209384019390910190615654565b945050505060208301356001600160401b03811115615376575f5ffd5b602081525f610c9c60208301846151e4565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126156cf575f5ffd5b9190910192915050565b5f5f8335601e198436030181126156ee575f5ffd5b8301803591506001600160401b03821115615707575f5ffd5b6020019150600581901b3603821315611e73575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f6020828403121561575c575f5ffd5b8151610c9c81615077565b634e487b7160e01b5f52601160045260245ffd5b808201808211156117c3576117c3615767565b60a08101853561579d81614a67565b6001600160a01b0316825263ffffffff6157b960208801614de7565b16602083015260408201949094526001600160a01b03929092166060830152608090910152919050565b5f82601f8301126157f2575f5ffd5b8151615800614c7682614c37565b8082825260208201915060208360051b860101925085831115615821575f5ffd5b602085015b83811015614cc2578051835260209283019201615826565b5f5f6040838503121561584f575f5ffd5b82516001600160401b03811115615864575f5ffd5b8301601f81018513615874575f5ffd5b8051615882614c7682614c37565b8082825260208201915060208360051b8501019250878311156158a3575f5ffd5b6020840193505b828410156158ce5783516158bd81614a67565b8252602093840193909101906158aa565b8095505050505060208301516001600160401b038111156158ed575f5ffd5b615382858286016157e3565b5f60208284031215615909575f5ffd5b5051919050565b5f823560de198336030181126156cf575f5ffd5b5f6117c33683614f6a565b5f6020828403121561593f575f5ffd5b8135610c9c8161555d565b6001600160a01b03831681526040602082018190525f9061186b90830184615109565b5f6020828403121561597d575f5ffd5b81516001600160401b03811115615992575f5ffd5b8201601f810184136159a2575f5ffd5b80516159b0614c7682614c37565b8082825260208201915060208360051b8501019250868311156159d1575f5ffd5b6020840193505b8284101561088d5783516159eb81615077565b8252602093840193909101906159d8565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615a3157615a31615767565b5060010190565b838152606060208201525f615a506060830185615142565b828103604084015261088d8185614d9b565b5f60208284031215615a72575f5ffd5b8151610c9c8161555d565b818103818111156117c3576117c3615767565b63ffffffff82811682821603908111156117c3576117c3615767565b63ffffffff81811683821601908111156117c3576117c3615767565b5f5f60408385031215615ad9575f5ffd5b505080516020909101519092909150565b5f60208284031215615afa575f5ffd5b8151610c9c81614a67565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160a01b03841681526060602082018190525f90615b5090830185615109565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f61186b6040830184614f2a565b5f82518060208501845e5f920191825250919050565b5f82615bc257634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220eb609cbbe717d35d459e2d155ddc463ef3365654ab74b2f281a4052efc62caaa64736f6c634300081e0033", } // DelegationManagerABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/EigenPod/binding.go b/pkg/bindings/EigenPod/binding.go index feac71f426..e24b5a6142 100644 --- a/pkg/bindings/EigenPod/binding.go +++ b/pkg/bindings/EigenPod/binding.go @@ -86,7 +86,7 @@ type IEigenPodTypesWithdrawalRequest struct { // EigenPodMetaData contains all meta data concerning the EigenPod contract. var EigenPodMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"activeValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointBalanceExitedGwei\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.Checkpoint\",\"components\":[{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proofsRemaining\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"podBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"balanceDeltasGwei\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"prevBeaconBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConsolidationRequestFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawalRequestFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofSubmitter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recoverTokens\",\"inputs\":[{\"name\":\"tokenList\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"amountsToWithdraw\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"requestConsolidation\",\"inputs\":[{\"name\":\"requests\",\"type\":\"tuple[]\",\"internalType\":\"structIEigenPodTypes.ConsolidationRequest[]\",\"components\":[{\"name\":\"srcPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"targetPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"requestWithdrawal\",\"inputs\":[{\"name\":\"requests\",\"type\":\"tuple[]\",\"internalType\":\"structIEigenPodTypes.WithdrawalRequest[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amountGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setProofSubmitter\",\"inputs\":[{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"startCheckpoint\",\"inputs\":[{\"name\":\"revertIfNoBalance\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validatorPubkeyHashToInfo\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorPubkeyToInfo\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyCheckpointProofs\",\"inputs\":[{\"name\":\"balanceContainerProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.BalanceContainerProof\",\"components\":[{\"name\":\"balanceContainerRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proofs\",\"type\":\"tuple[]\",\"internalType\":\"structBeaconChainProofs.BalanceProof[]\",\"components\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"balanceRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyStaleBalance\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.ValidatorProof\",\"components\":[{\"name\":\"validatorFields\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyWithdrawalCredentials\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"validatorIndices\",\"type\":\"uint40[]\",\"internalType\":\"uint40[]\"},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawRestakedBeaconChainETH\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amountWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawableRestakedExecutionLayerGwei\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"CheckpointCreated\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validatorCount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointFinalized\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"totalShareDeltaWei\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConsolidationRequested\",\"inputs\":[{\"name\":\"sourcePubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"targetPubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EigenPodStaked\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExitRequested\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NonBeaconChainETHReceived\",\"inputs\":[{\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProofSubmitterUpdated\",\"inputs\":[{\"name\":\"prevProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RestakedBeaconChainETHWithdrawn\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SwitchToCompoundingRequested\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorBalanceUpdated\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"balanceTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newValidatorBalanceGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorCheckpointed\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRestaked\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWithdrawn\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalRequested\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawalAmountGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BeaconTimestampBeforeLatestCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BeaconTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotCheckpointTwiceInSingleBlock\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CheckpointAlreadyActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CredentialsAlreadyVerified\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EmptyRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FeeQueryFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ForkTimestampZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientWithdrawableBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEIP4788Response\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPubKeyLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidValidatorFieldsLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LeavesNotPowerOfTwo\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MsgValueNot32ETH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoActiveCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoBalanceToCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotEnoughLeaves\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwnerOrProofSubmitter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PredeployFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TimestampOutOfRange\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorInactiveOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorIsExitingBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotActiveInPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotSlashedOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalCredentialsNotForEigenPod\",\"inputs\":[]}]", - Bin: "0x60c060405234801561000f575f5ffd5b5060405161473838038061473883398101604081905261002e91610123565b6001600160a01b03808316608052811660a052610049610050565b505061015b565b5f54610100900460ff16156100bb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161461010a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610120575f5ffd5b50565b5f5f60408385031215610134575f5ffd5b825161013f8161010c565b60208401519092506101508161010c565b809150509250929050565b60805160a05161455a6101de5f395f818161031e015281816106a801528181610750015281816109fe01528181610dbf01528181610fb9015281816110990152818161159a01528181611641015281816118ca01528181611c1801528181611d4c0152818161222201526130ef01525f818161054e01526116aa015261455a5ff3fe6080604052600436106101b2575f3560e01c80636c0d2d5a116100e7578063c44e30dc11610087578063d06d558711610062578063d06d558714610613578063dda3346c14610632578063ee94d67c14610651578063f074ba6214610670575f5ffd5b8063c44e30dc146105c1578063c4907442146105d5578063c4d66de8146105f4575f5ffd5b806374cdd798116100c257806374cdd7981461053d57806388676cad146105705780639b4e46341461058f578063b522538a146105a2575f5ffd5b80636c0d2d5a146104bd5780636fcd0e53146104dc5780637439841f14610508575f5ffd5b806342ecff2a1161015257806352396a591161012d57806352396a591461042b578063587533571461045f57806358eaee791461047e5780636691954e146104aa575f5ffd5b806342ecff2a146102e75780634665bcda1461030d57806347d2837214610340575f5ffd5b80632340e8d31161018d5780632340e8d31461026f5780633474aa16146102845780633f5fa57a146102b55780633f65cf19146102c8575f5ffd5b8063039157d2146101f05780630b18ff66146102115780631e5155331461024d575f5ffd5b366101ec576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101fb575f5ffd5b5061020f61020a366004613a01565b61068f565b005b34801561021c575f5ffd5b50603354610230906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610258575f5ffd5b506102616109c4565b604051908152602001610244565b34801561027a575f5ffd5b5061026160395481565b34801561028f575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610244565b61020f6102c3366004613abc565b6109e5565b3480156102d3575f5ffd5b5061020f6102e2366004613afa565b610d66565b3480156102f2575f5ffd5b50603a5461029d90600160401b90046001600160401b031681565b348015610318575f5ffd5b506102307f000000000000000000000000000000000000000000000000000000000000000081565b34801561034b575f5ffd5b506103d06040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161024491905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b348015610436575f5ffd5b5061029d610445366004613bd1565b603b6020525f90815260409020546001600160401b031681565b34801561046a575f5ffd5b50603e54610230906001600160a01b031681565b348015610489575f5ffd5b5061049d610498366004613c29565b61101e565b6040516102449190613c8f565b61020f6104b8366004613abc565b611080565b3480156104c8575f5ffd5b506102616104d7366004613bd1565b611388565b3480156104e7575f5ffd5b506104fb6104f6366004613c9d565b611496565b6040516102449190613cb4565b348015610513575f5ffd5b5061049d610522366004613c9d565b5f90815260366020526040902054600160c01b900460ff1690565b348015610548575f5ffd5b506102307f000000000000000000000000000000000000000000000000000000000000000081565b34801561057b575f5ffd5b5061020f61058a366004613d14565b611541565b61020f61059d366004613d2f565b611636565b3480156105ad575f5ffd5b506104fb6105bc366004613c29565b6117b4565b3480156105cc575f5ffd5b506102616118a3565b3480156105e0575f5ffd5b5061020f6105ef366004613dc4565b6118bf565b3480156105ff575f5ffd5b5061020f61060e366004613dee565b6119f6565b34801561061e575f5ffd5b5061020f61062d366004613dee565b611b40565b34801561063d575f5ffd5b5061020f61064c366004613ed9565b611bd4565b34801561065c575f5ffd5b50603a5461029d906001600160401b031681565b34801561067b575f5ffd5b5061020f61068a366004613fab565b611d33565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107199190614012565b156107375760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561079d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c19190614012565b156107df5760405163840a48d560e01b815260040160405180910390fd5b5f6108236107ed858061402d565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061212f92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561089157610891613c5b565b60028111156108a2576108a2613c5b565b81525050905080604001516001600160401b0316876001600160401b0316116108de576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108f6576108f6613c5b565b146109145760405163d49e19a760e01b815260040160405180910390fd5b610957610921868061402d565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061215192505050565b6109745760405163161ce5ed60e31b815260040160405180910390fd5b61098661098088611388565b87612179565b6109b26109928861221e565b873561099e888061402d565b6109ab60208b018b614072565b87516122f5565b6109bb5f612429565b50505050505050565b5f6109e071bbddc7ce488642fb579f8b00f3a5900072516125a9565b905090565b604051635ac86ab760e01b8152600a60048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6f9190614012565b15610a8d5760405163840a48d560e01b815260040160405180910390fd5b6033546001600160a01b0316331480610ab05750603e546001600160a01b031633145b610acd5760405163427a777960e01b815260040160405180910390fd5b5f610ad66118a3565b90505f610ae384836140c8565b905080341015610b065760405163356680b760e01b815260040160405180910390fd5b5f610b1182346140df565b90505f5b85811015610d4d5736878783818110610b3057610b306140f2565b9050602002810190610b429190614106565b90505f610b8b610b528380614072565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061262f92505050565b905060015f82815260366020526040902054600160c01b900460ff166002811115610bb857610bb8613c5b565b14610bd65760405163d49e19a760e01b815260040160405180910390fd5b5f610be18380614072565b610bf16040860160208701613bd1565b604051602001610c0393929190614124565b60405160208183030381529060405290505f710961ef480eb55e80d19ad83579a64c0070026001600160a01b03168883604051610c40919061415c565b5f6040518083038185875af1925050503d805f8114610c7a576040519150601f19603f3d011682016040523d82523d5f602084013e610c7f565b606091505b5050905080610ca15760405163fc52d48360e01b815260040160405180910390fd5b610cb16040850160208601613bd1565b6001600160401b03165f03610cef5760405183907f60d8ca014d4765a2b8b389e25714cb1cef83b574222911a01d90c1bd69d2d320905f90a2610d3d565b827f8b2737bb64ab2f2dc09552dfa1c250399e6a42c7ea9f0e1c658f5d65d708ec05610d216040870160208801613bd1565b6040516001600160401b03909116815260200160405180910390a25b505060019092019150610b159050565b508015610d5e57610d5e33826126c0565b505050505050565b6033546001600160a01b0316331480610d895750603e546001600160a01b031633145b610da65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610e0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e309190614012565b15610e4e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610e5c57508382145b610e79576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610eaf576040516337e07ffd60e01b815260040160405180910390fd5b603a546001600160401b03908116908a1611610ede576040516335e7f6b760e01b815260040160405180910390fd5b610ef0610eea8a611388565b89612179565b5f805b87811015610f8957610f758b8b358b8b85818110610f1357610f136140f2565b9050602002016020810190610f289190614167565b8a8a86818110610f3a57610f3a6140f2565b9050602002810190610f4c9190614072565b8a8a88818110610f5e57610f5e6140f2565b9050602002810190610f70919061402d565b6127d5565b610f7f908361418b565b9150600101610ef3565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610ffc575f5ffd5b505af115801561100e573d5f5f3e3d5ffd5b5050505050505050505050505050565b5f5f61105e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061262f92505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b604051635ac86ab760e01b8152600960048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156110e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a9190614012565b156111285760405163840a48d560e01b815260040160405180910390fd5b6033546001600160a01b031633148061114b5750603e546001600160a01b031633145b6111685760405163427a777960e01b815260040160405180910390fd5b5f6111716109c4565b90505f61117e84836140c8565b9050803410156111a15760405163356680b760e01b815260040160405180910390fd5b5f6111ac82346140df565b90505f5b85811015610d4d57368787838181106111cb576111cb6140f2565b90506020028101906111dd9190614106565b90505f6111ed610b528380614072565b90505f611200610b526020850185614072565b905060015f82815260366020526040902054600160c01b900460ff16600281111561122d5761122d613c5b565b1461124b5760405163d49e19a760e01b815260040160405180910390fd5b5f6112568480614072565b6112636020870187614072565b604051602001611276949392919061419e565b60405160208183030381529060405290505f71bbddc7ce488642fb579f8b00f3a5900072516001600160a01b031689836040516112b3919061415c565b5f6040518083038185875af1925050503d805f81146112ed576040519150601f19603f3d011682016040523d82523d5f602084013e6112f2565b606091505b50509050806113145760405163fc52d48360e01b815260040160405180910390fd5b82840361134a5760405184907fc97b965b92ae7fd20095fe8eb7b99f81f95f8c4adffb22a19116d8eb2846b016905f90a2611377565b604051839085907f42f9c9db2ca443e9ec62f4588bd0c9b241065c02c2a8001ac164ae1282dc7b94905f90a35b5050600190930192506111b0915050565b5f611396611fff600c6140c8565b6113a96001600160401b038416426140df565b106113c757604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f198184030181529082905261140e9161415c565b5f60405180830381855afa9150503d805f8114611446576040519150601f19603f3d011682016040523d82523d5f602084013e61144b565b606091505b509150915081801561145d57505f8151115b61147a5760405163558ad0a360e01b815260040160405180910390fd5b8080602001905181019061148e91906141bd565b949350505050565b6114bd604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561152757611527613c5b565b600281111561153857611538613c5b565b90525092915050565b6033546001600160a01b03163314806115645750603e546001600160a01b031633145b6115815760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156115e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160b9190614012565b156116295760405163840a48d560e01b815260040160405180910390fd5b61163282612429565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461167f57604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec800000146116a85760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876116eb612cd6565b8888886040518863ffffffff1660e01b815260040161170f9695949392919061422a565b5f604051808303818588803b158015611726575f5ffd5b505af1158015611738573d5f5f3e3d5ffd5b50505050507fa01003766d3cd97cf2ade5429690bf5d206be7fb01ef9d3a0089ecf67bc1121961179c86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061262f92505050565b60405190815260200160405180910390a15050505050565b6117db604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61181c85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061262f92505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561188857611888613c5b565b600281111561189957611899613c5b565b9052509392505050565b5f6109e0710961ef480eb55e80d19ad83579a64c0070026125a9565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461190857604051633213a66160e21b815260040160405180910390fd5b5f611917633b9aca008361428c565b9050611930633b9aca006001600160401b0383166140c8565b6034549092506001600160401b039081169082161115611963576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906119809084906001600160401b031661429f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516119df91815260200190565b60405180910390a26119f183836126c0565b505050565b5f54610100900460ff1615808015611a1457505f54600160ff909116105b80611a2d5750303b158015611a2d57505f5460ff166001145b611a955760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611ab6575f805461ff0019166101001790555b6001600160a01b038216611add576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015611632575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b03163314611b6b5760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314611bff5760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611c65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c899190614012565b15611ca75760405163840a48d560e01b815260040160405180910390fd5b8251845114611cc9576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611d2c57611d2483858381518110611cea57611cea6140f2565b6020026020010151878481518110611d0457611d046140f2565b60200260200101516001600160a01b0316612d069092919063ffffffff16565b600101611ccb565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611d99573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dbd9190614012565b15611ddb5760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f819003611e0f57604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b90049091166080820152611e76611e6e8361221e565b825188612d58565b5f805b858110156120d65736878783818110611e9457611e946140f2565b9050602002810190611ea691906142be565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f1657611f16613c5b565b6002811115611f2757611f27613c5b565b9052509050600181606001516002811115611f4457611f44613c5b565b14611f505750506120ce565b856001600160401b031681604001516001600160401b031610611f745750506120ce565b5f8080611f84848a8f3588612e19565b60208b0180519396509194509250611f9b826142d2565b62ffffff16905250608088018051849190611fb79083906142ef565b6001600160401b0316905250606088018051839190611fd790839061430e565b60070b905250611fe781886142ef565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561208b5761208b613c5b565b021790555050604051863591506001600160401b038b16907fe4866335761a51dcaff766448ab0af6064291ee5dc94e68492bb9cd757c1e350905f90a350505050505b600101611e79565b506001600160401b038084165f908152603b6020526040812080548493919291612102918591166142ef565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506109bb82612f2f565b5f815f81518110612142576121426140f2565b60200260200101519050919050565b5f81600381518110612165576121656140f2565b60200260200101515f5f1b14159050919050565b612185600360206140c8565b6121926020830183614072565b9050146121b2576040516313717da960e21b815260040160405180910390fd5b6122016121c26020830183614072565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508692505084359050600361314f565b611632576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561227c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a0919061433d565b9050806001600160401b03165f036122cb576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b031611156122ec5760016122ee565b5f5b9392505050565b600884146123165760405163200591bd60e01b815260040160405180910390fd5b5f61232088613184565b90508061232f6028600161418b565b612339919061418b565b6123449060206140c8565b8314612363576040516313717da960e21b815260040160405180910390fd5b5f61239f8787808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506131ac92505050565b90505f64ffffffffff84166123b66028600161418b565b600b901b17905061240086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d925086915085905061314f565b61241d576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b0316156124595760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603612487576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b03166124a3633b9aca004761428c565b6124ad919061429f565b90508180156124c357506001600160401b038116155b156124e1576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a001604052806124f642611388565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff000000000000000019909216919091179055905061255a81612f2f565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f5f836001600160a01b03166040515f60405180830381855afa9150503d805f81146125f1576040519150601f19603f3d011682016040523d82523d5f602084013e6125f6565b606091505b5091509150818015612609575080516020145b6126265760405163c90158af60e01b815260040160405180910390fd5b61148e81614358565b5f815160301461265257604051634f88323960e11b815260040160405180910390fd5b6040516002906126689084905f9060200161437b565b60408051601f19818403018152908290526126829161415c565b602060405180830381855afa15801561269d573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061107a91906141bd565b804710156127105760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611a8c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612759576040519150601f19603f3d011682016040523d82523d5f602084013e61275e565b606091505b50509050806119f15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611a8c565b5f5f6128128484808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061212f92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561288057612880613c5b565b600281111561289157612891613c5b565b90525090505f816060015160028111156128ad576128ad613c5b565b146128cb576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b0380166129108686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061347a92505050565b6001600160401b03160361293757604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661297c8686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061349e92505050565b6001600160401b0316146129a357604051632eade63760e01b815260040160405180910390fd5b6129ab612cd6565b6129b490614358565b6129ef8686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506134b592505050565b1480612a4457506129fe6134c9565b612a0790614358565b612a428686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506134b592505050565b145b612a6157604051633772dd5360e11b815260040160405180910390fd5b5f612a9d8686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506134e592505050565b9050612ab6612aab8c61221e565b8b88888c8c8f6122f5565b60398054905f612ac58361439f565b9091555050603a545f90600160401b90046001600160401b031615612afc57603a54600160401b90046001600160401b0316612b09565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612bde57612bde613c5b565b021790555050603d8054849250601390612c09908490600160981b90046001600160401b03166142ef565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f101790c2993f6a4d962bd17c786126823ba1c4cf04ff4cccb2659d50fb20aee884604051612c5e91815260200190565b60405180910390a1604080518581526001600160401b03838116602083015284168183015290517fcdae700d7241bc027168c53cf6f889763b0a2c88a65d77fc13a8a9fef0d8605f9181900360600190a1612cc6633b9aca006001600160401b0384166140c8565b9c9b505050505050505050505050565b604051606090612cf290600160f81b905f9030906020016143b7565b604051602081830303815290604052905090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526119f19084906134fc565b5f612d6284613184565b9050612d6f81600361418b565b612d7a9060206140c8565b612d876020840184614072565b905014612da7576040516313717da960e21b815260040160405180910390fd5b6003811b600c17612dfc612dbe6020850185614072565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525088925050863590508461314f565b611d2c576040516309bde33960e01b815260040160405180910390fd5b5f5f5f866020015192505f612e3286895f0151876135cf565b9050836001600160401b0316816001600160401b031614612ea657612e5784826143f5565b60408051873581526001600160401b038a8116602083015284168183015290519194507fcdae700d7241bc027168c53cf6f889763b0a2c88a65d77fc13a8a9fef0d8605f919081900360600190a15b6001600160401b0380821660208a0181905290881660408a01525f03612f245760398054905f612ed583614424565b909155505060026060890152612eea83614439565b6040519092508535906001600160401b038916907f5ce0aa04ae51d52da6e680fbe0336d2e2432f7c3dc2d4f3193204c57b9072107905f90a35b509450945094915050565b8051603c556020810151603d805460408401516060850151608086015162ffffff9095166affffffffffffffffffffff19909316831763010000006001600160401b0393841602176fffffffffffffffffffffffffffffffff60581b1916600160581b9183169190910267ffffffffffffffff60981b191617600160981b919094160292909217905515612fc05750565b60808101516034545f91612fdc916001600160401b03166142ef565b90505f82606001518360400151612ff3919061430e565b60408401516034805492935090915f906130179084906001600160401b03166142ef565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061306790633b9aca009085166140c8565b90505f61307c633b9aca00600785900b61445e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015613132575f5ffd5b505af1158015613144573d5f5f3e3d5ffd5b505050505050505050565b5f8361316e576040516329e7276760e11b815260040160405180910390fd5b8361317a8685856136ad565b1495945050505050565b5f8082600181111561319857613198613c5b565b146131a457600661107a565b600592915050565b5f60018251116131cf5760405163f8ef036760e01b815260040160405180910390fd5b6131d982516137a0565b6131f65760405163f6558f5160e01b815260040160405180910390fd5b5f60028351613205919061428c565b90505f816001600160401b0381111561322057613220613e09565b604051908082528060200260200182016040528015613249578160200160208202803683370190505b5090505f5b828110156133435760028561326383836140c8565b81518110613273576132736140f2565b60200260200101518683600261328991906140c8565b61329490600161418b565b815181106132a4576132a46140f2565b60200260200101516040516020016132c6929190918252602082015260400190565b60408051601f19818403018152908290526132e09161415c565b602060405180830381855afa1580156132fb573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061331e91906141bd565b828281518110613330576133306140f2565b602090810291909101015260010161324e565b505b816001146134575761335860028361428c565b91505f5b828110156134515760028261337183836140c8565b81518110613381576133816140f2565b60200260200101518383600261339791906140c8565b6133a290600161418b565b815181106133b2576133b26140f2565b60200260200101516040516020016133d4929190918252602082015260400190565b60408051601f19818403018152908290526133ee9161415c565b602060405180830381855afa158015613409573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061342c91906141bd565b82828151811061343e5761343e6140f2565b602090810291909101015260010161335c565b50613345565b805f81518110613469576134696140f2565b602002602001015192505050919050565b5f61107a82600581518110613491576134916140f2565b60200260200101516137bf565b5f61107a82600681518110613491576134916140f2565b5f81600181518110612142576121426140f2565b604051606090612cf290600160f91b905f9030906020016143b7565b5f61107a82600281518110613491576134916140f2565b5f613550826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138269092919063ffffffff16565b905080515f14806135705750808060200190518101906135709190614012565b6119f15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611a8c565b5f6135dc6026600161418b565b6135e79060206140c8565b6135f46040840184614072565b905014613614576040516313717da960e21b815260040160405180910390fd5b5f61362060048561448d565b64ffffffffff1690506136796136396040850185614072565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250899250505060208601358461314f565b613696576040516309bde33960e01b815260040160405180910390fd5b6136a4836020013585613834565b95945050505050565b5f83515f141580156136ca5750602084516136c891906144b6565b155b6136e7576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b855181116137775761370b6002856144b6565b5f0361373d5781515f528086015160205260208260405f60026107d05a03fa613732575f5ffd5b600284049350613765565b808601515f52815160205260208260405f60026107d05a03fa61375e575f5ffd5b6002840493505b61377060208261418b565b90506136f8565b508215613797576040516363df817160e01b815260040160405180910390fd5b51949350505050565b5f811580159061107a57506137b66001836140df565b82161592915050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b606061148e84845f85613860565b5f806138416004846144c9565b61384c9060406144f2565b64ffffffffff16905061148e84821b6137bf565b6060824710156138c15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611a8c565b5f5f866001600160a01b031685876040516138dc919061415c565b5f6040518083038185875af1925050503d805f8114613916576040519150601f19603f3d011682016040523d82523d5f602084013e61391b565b606091505b509150915061392c87838387613937565b979650505050505050565b606083156139a55782515f0361399e576001600160a01b0385163b61399e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611a8c565b508161148e565b61148e83838151156139ba5781518083602001fd5b8060405162461bcd60e51b8152600401611a8c9190614512565b6001600160401b03811681146139e8575f5ffd5b50565b5f604082840312156139fb575f5ffd5b50919050565b5f5f5f60608486031215613a13575f5ffd5b8335613a1e816139d4565b925060208401356001600160401b03811115613a38575f5ffd5b613a44868287016139eb565b92505060408401356001600160401b03811115613a5f575f5ffd5b613a6b868287016139eb565b9150509250925092565b5f5f83601f840112613a85575f5ffd5b5081356001600160401b03811115613a9b575f5ffd5b6020830191508360208260051b8501011115613ab5575f5ffd5b9250929050565b5f5f60208385031215613acd575f5ffd5b82356001600160401b03811115613ae2575f5ffd5b613aee85828601613a75565b90969095509350505050565b5f5f5f5f5f5f5f5f60a0898b031215613b11575f5ffd5b8835613b1c816139d4565b975060208901356001600160401b03811115613b36575f5ffd5b613b428b828c016139eb565b97505060408901356001600160401b03811115613b5d575f5ffd5b613b698b828c01613a75565b90975095505060608901356001600160401b03811115613b87575f5ffd5b613b938b828c01613a75565b90955093505060808901356001600160401b03811115613bb1575f5ffd5b613bbd8b828c01613a75565b999c989b5096995094979396929594505050565b5f60208284031215613be1575f5ffd5b81356122ee816139d4565b5f5f83601f840112613bfc575f5ffd5b5081356001600160401b03811115613c12575f5ffd5b602083019150836020828501011115613ab5575f5ffd5b5f5f60208385031215613c3a575f5ffd5b82356001600160401b03811115613c4f575f5ffd5b613aee85828601613bec565b634e487b7160e01b5f52602160045260245ffd5b60038110613c8b57634e487b7160e01b5f52602160045260245ffd5b9052565b6020810161107a8284613c6f565b5f60208284031215613cad575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151613d006060840182613c6f565b5092915050565b80151581146139e8575f5ffd5b5f60208284031215613d24575f5ffd5b81356122ee81613d07565b5f5f5f5f5f60608688031215613d43575f5ffd5b85356001600160401b03811115613d58575f5ffd5b613d6488828901613bec565b90965094505060208601356001600160401b03811115613d82575f5ffd5b613d8e88828901613bec565b96999598509660400135949350505050565b6001600160a01b03811681146139e8575f5ffd5b8035613dbf81613da0565b919050565b5f5f60408385031215613dd5575f5ffd5b8235613de081613da0565b946020939093013593505050565b5f60208284031215613dfe575f5ffd5b81356122ee81613da0565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613e4557613e45613e09565b604052919050565b5f6001600160401b03821115613e6557613e65613e09565b5060051b60200190565b5f82601f830112613e7e575f5ffd5b8135613e91613e8c82613e4d565b613e1d565b8082825260208201915060208360051b860101925085831115613eb2575f5ffd5b602085015b83811015613ecf578035835260209283019201613eb7565b5095945050505050565b5f5f5f60608486031215613eeb575f5ffd5b83356001600160401b03811115613f00575f5ffd5b8401601f81018613613f10575f5ffd5b8035613f1e613e8c82613e4d565b8082825260208201915060208360051b850101925088831115613f3f575f5ffd5b6020840193505b82841015613f6a578335613f5981613da0565b825260209384019390910190613f46565b955050505060208401356001600160401b03811115613f87575f5ffd5b613f9386828701613e6f565b925050613fa260408501613db4565b90509250925092565b5f5f5f60408486031215613fbd575f5ffd5b83356001600160401b03811115613fd2575f5ffd5b613fde868287016139eb565b93505060208401356001600160401b03811115613ff9575f5ffd5b61400586828701613a75565b9497909650939450505050565b5f60208284031215614022575f5ffd5b81516122ee81613d07565b5f5f8335601e19843603018112614042575f5ffd5b8301803591506001600160401b0382111561405b575f5ffd5b6020019150600581901b3603821315613ab5575f5ffd5b5f5f8335601e19843603018112614087575f5ffd5b8301803591506001600160401b038211156140a0575f5ffd5b602001915036819003821315613ab5575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761107a5761107a6140b4565b8181038181111561107a5761107a6140b4565b634e487b7160e01b5f52603260045260245ffd5b5f8235603e1983360301811261411a575f5ffd5b9190910192915050565b8284823760c09190911b6001600160c01b0319169101908152600801919050565b5f81518060208401855e5f93019283525090919050565b5f6122ee8284614145565b5f60208284031215614177575f5ffd5b813564ffffffffff811681146122ee575f5ffd5b8082018082111561107a5761107a6140b4565b838582375f8482015f8152838582375f93019283525090949350505050565b5f602082840312156141cd575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f61423d60808301888a6141d4565b828103602084015261424f81886141fc565b905082810360408401526142648186886141d4565b915050826060830152979650505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261429a5761429a614278565b500490565b6001600160401b03828116828216039081111561107a5761107a6140b4565b5f8235605e1983360301811261411a575f5ffd5b5f62ffffff8216806142e6576142e66140b4565b5f190192915050565b6001600160401b03818116838216019081111561107a5761107a6140b4565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff198212171561107a5761107a6140b4565b5f6020828403121561434d575f5ffd5b81516122ee816139d4565b805160208083015191908110156139fb575f1960209190910360031b1b16919050565b5f6143868285614145565b6001600160801b03199390931683525050601001919050565b5f600182016143b0576143b06140b4565b5060010190565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff8213171561107a5761107a6140b4565b5f81614432576144326140b4565b505f190190565b5f8160070b677fffffffffffffff198103614456576144566140b4565b5f0392915050565b8082025f8212600160ff1b84141615614479576144796140b4565b818105831482151761107a5761107a6140b4565b5f64ffffffffff8316806144a3576144a3614278565b8064ffffffffff84160491505092915050565b5f826144c4576144c4614278565b500690565b5f64ffffffffff8316806144df576144df614278565b8064ffffffffff84160691505092915050565b64ffffffffff8181168382160290811690818114613d0057613d006140b4565b602081525f6122ee60208301846141fc56fea264697066735822122005bc138fd7b195ef4b6d015737dc97c649c6394644aa38322695570f39cb1d8a64736f6c634300081e0033", + Bin: "0x60c060405234801561000f575f5ffd5b5060405161473838038061473883398101604081905261002e91610123565b6001600160a01b03808316608052811660a052610049610050565b505061015b565b5f54610100900460ff16156100bb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161461010a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610120575f5ffd5b50565b5f5f60408385031215610134575f5ffd5b825161013f8161010c565b60208401519092506101508161010c565b809150509250929050565b60805160a05161455a6101de5f395f818161031e015281816106a801528181610750015281816109fe01528181610dbf01528181610fb9015281816110990152818161159a01528181611641015281816118ca01528181611c1801528181611d4c0152818161222201526130ef01525f818161054e01526116aa015261455a5ff3fe6080604052600436106101b2575f3560e01c80636c0d2d5a116100e7578063c44e30dc11610087578063d06d558711610062578063d06d558714610613578063dda3346c14610632578063ee94d67c14610651578063f074ba6214610670575f5ffd5b8063c44e30dc146105c1578063c4907442146105d5578063c4d66de8146105f4575f5ffd5b806374cdd798116100c257806374cdd7981461053d57806388676cad146105705780639b4e46341461058f578063b522538a146105a2575f5ffd5b80636c0d2d5a146104bd5780636fcd0e53146104dc5780637439841f14610508575f5ffd5b806342ecff2a1161015257806352396a591161012d57806352396a591461042b578063587533571461045f57806358eaee791461047e5780636691954e146104aa575f5ffd5b806342ecff2a146102e75780634665bcda1461030d57806347d2837214610340575f5ffd5b80632340e8d31161018d5780632340e8d31461026f5780633474aa16146102845780633f5fa57a146102b55780633f65cf19146102c8575f5ffd5b8063039157d2146101f05780630b18ff66146102115780631e5155331461024d575f5ffd5b366101ec576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101fb575f5ffd5b5061020f61020a366004613a01565b61068f565b005b34801561021c575f5ffd5b50603354610230906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610258575f5ffd5b506102616109c4565b604051908152602001610244565b34801561027a575f5ffd5b5061026160395481565b34801561028f575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610244565b61020f6102c3366004613abc565b6109e5565b3480156102d3575f5ffd5b5061020f6102e2366004613afa565b610d66565b3480156102f2575f5ffd5b50603a5461029d90600160401b90046001600160401b031681565b348015610318575f5ffd5b506102307f000000000000000000000000000000000000000000000000000000000000000081565b34801561034b575f5ffd5b506103d06040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161024491905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b348015610436575f5ffd5b5061029d610445366004613bd1565b603b6020525f90815260409020546001600160401b031681565b34801561046a575f5ffd5b50603e54610230906001600160a01b031681565b348015610489575f5ffd5b5061049d610498366004613c29565b61101e565b6040516102449190613c8f565b61020f6104b8366004613abc565b611080565b3480156104c8575f5ffd5b506102616104d7366004613bd1565b611388565b3480156104e7575f5ffd5b506104fb6104f6366004613c9d565b611496565b6040516102449190613cb4565b348015610513575f5ffd5b5061049d610522366004613c9d565b5f90815260366020526040902054600160c01b900460ff1690565b348015610548575f5ffd5b506102307f000000000000000000000000000000000000000000000000000000000000000081565b34801561057b575f5ffd5b5061020f61058a366004613d14565b611541565b61020f61059d366004613d2f565b611636565b3480156105ad575f5ffd5b506104fb6105bc366004613c29565b6117b4565b3480156105cc575f5ffd5b506102616118a3565b3480156105e0575f5ffd5b5061020f6105ef366004613dc4565b6118bf565b3480156105ff575f5ffd5b5061020f61060e366004613dee565b6119f6565b34801561061e575f5ffd5b5061020f61062d366004613dee565b611b40565b34801561063d575f5ffd5b5061020f61064c366004613ed9565b611bd4565b34801561065c575f5ffd5b50603a5461029d906001600160401b031681565b34801561067b575f5ffd5b5061020f61068a366004613fab565b611d33565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107199190614012565b156107375760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561079d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c19190614012565b156107df5760405163840a48d560e01b815260040160405180910390fd5b5f6108236107ed858061402d565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061212f92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561089157610891613c5b565b60028111156108a2576108a2613c5b565b81525050905080604001516001600160401b0316876001600160401b0316116108de576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108f6576108f6613c5b565b146109145760405163d49e19a760e01b815260040160405180910390fd5b610957610921868061402d565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061215192505050565b6109745760405163161ce5ed60e31b815260040160405180910390fd5b61098661098088611388565b87612179565b6109b26109928861221e565b873561099e888061402d565b6109ab60208b018b614072565b87516122f5565b6109bb5f612429565b50505050505050565b5f6109e071bbddc7ce488642fb579f8b00f3a5900072516125a9565b905090565b604051635ac86ab760e01b8152600a60048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6f9190614012565b15610a8d5760405163840a48d560e01b815260040160405180910390fd5b6033546001600160a01b0316331480610ab05750603e546001600160a01b031633145b610acd5760405163427a777960e01b815260040160405180910390fd5b5f610ad66118a3565b90505f610ae384836140c8565b905080341015610b065760405163356680b760e01b815260040160405180910390fd5b5f610b1182346140df565b90505f5b85811015610d4d5736878783818110610b3057610b306140f2565b9050602002810190610b429190614106565b90505f610b8b610b528380614072565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061262f92505050565b905060015f82815260366020526040902054600160c01b900460ff166002811115610bb857610bb8613c5b565b14610bd65760405163d49e19a760e01b815260040160405180910390fd5b5f610be18380614072565b610bf16040860160208701613bd1565b604051602001610c0393929190614124565b60405160208183030381529060405290505f710961ef480eb55e80d19ad83579a64c0070026001600160a01b03168883604051610c40919061415c565b5f6040518083038185875af1925050503d805f8114610c7a576040519150601f19603f3d011682016040523d82523d5f602084013e610c7f565b606091505b5050905080610ca15760405163fc52d48360e01b815260040160405180910390fd5b610cb16040850160208601613bd1565b6001600160401b03165f03610cef5760405183907f60d8ca014d4765a2b8b389e25714cb1cef83b574222911a01d90c1bd69d2d320905f90a2610d3d565b827f8b2737bb64ab2f2dc09552dfa1c250399e6a42c7ea9f0e1c658f5d65d708ec05610d216040870160208801613bd1565b6040516001600160401b03909116815260200160405180910390a25b505060019092019150610b159050565b508015610d5e57610d5e33826126c0565b505050505050565b6033546001600160a01b0316331480610d895750603e546001600160a01b031633145b610da65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610e0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e309190614012565b15610e4e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610e5c57508382145b610e79576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610eaf576040516337e07ffd60e01b815260040160405180910390fd5b603a546001600160401b03908116908a1611610ede576040516335e7f6b760e01b815260040160405180910390fd5b610ef0610eea8a611388565b89612179565b5f805b87811015610f8957610f758b8b358b8b85818110610f1357610f136140f2565b9050602002016020810190610f289190614167565b8a8a86818110610f3a57610f3a6140f2565b9050602002810190610f4c9190614072565b8a8a88818110610f5e57610f5e6140f2565b9050602002810190610f70919061402d565b6127d5565b610f7f908361418b565b9150600101610ef3565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610ffc575f5ffd5b505af115801561100e573d5f5f3e3d5ffd5b5050505050505050505050505050565b5f5f61105e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061262f92505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b604051635ac86ab760e01b8152600960048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156110e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a9190614012565b156111285760405163840a48d560e01b815260040160405180910390fd5b6033546001600160a01b031633148061114b5750603e546001600160a01b031633145b6111685760405163427a777960e01b815260040160405180910390fd5b5f6111716109c4565b90505f61117e84836140c8565b9050803410156111a15760405163356680b760e01b815260040160405180910390fd5b5f6111ac82346140df565b90505f5b85811015610d4d57368787838181106111cb576111cb6140f2565b90506020028101906111dd9190614106565b90505f6111ed610b528380614072565b90505f611200610b526020850185614072565b905060015f82815260366020526040902054600160c01b900460ff16600281111561122d5761122d613c5b565b1461124b5760405163d49e19a760e01b815260040160405180910390fd5b5f6112568480614072565b6112636020870187614072565b604051602001611276949392919061419e565b60405160208183030381529060405290505f71bbddc7ce488642fb579f8b00f3a5900072516001600160a01b031689836040516112b3919061415c565b5f6040518083038185875af1925050503d805f81146112ed576040519150601f19603f3d011682016040523d82523d5f602084013e6112f2565b606091505b50509050806113145760405163fc52d48360e01b815260040160405180910390fd5b82840361134a5760405184907fc97b965b92ae7fd20095fe8eb7b99f81f95f8c4adffb22a19116d8eb2846b016905f90a2611377565b604051839085907f42f9c9db2ca443e9ec62f4588bd0c9b241065c02c2a8001ac164ae1282dc7b94905f90a35b5050600190930192506111b0915050565b5f611396611fff600c6140c8565b6113a96001600160401b038416426140df565b106113c757604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f198184030181529082905261140e9161415c565b5f60405180830381855afa9150503d805f8114611446576040519150601f19603f3d011682016040523d82523d5f602084013e61144b565b606091505b509150915081801561145d57505f8151115b61147a5760405163558ad0a360e01b815260040160405180910390fd5b8080602001905181019061148e91906141bd565b949350505050565b6114bd604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561152757611527613c5b565b600281111561153857611538613c5b565b90525092915050565b6033546001600160a01b03163314806115645750603e546001600160a01b031633145b6115815760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156115e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160b9190614012565b156116295760405163840a48d560e01b815260040160405180910390fd5b61163282612429565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461167f57604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec800000146116a85760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876116eb612cd6565b8888886040518863ffffffff1660e01b815260040161170f9695949392919061422a565b5f604051808303818588803b158015611726575f5ffd5b505af1158015611738573d5f5f3e3d5ffd5b50505050507fa01003766d3cd97cf2ade5429690bf5d206be7fb01ef9d3a0089ecf67bc1121961179c86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061262f92505050565b60405190815260200160405180910390a15050505050565b6117db604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61181c85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061262f92505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561188857611888613c5b565b600281111561189957611899613c5b565b9052509392505050565b5f6109e0710961ef480eb55e80d19ad83579a64c0070026125a9565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461190857604051633213a66160e21b815260040160405180910390fd5b5f611917633b9aca008361428c565b9050611930633b9aca006001600160401b0383166140c8565b6034549092506001600160401b039081169082161115611963576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906119809084906001600160401b031661429f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516119df91815260200190565b60405180910390a26119f183836126c0565b505050565b5f54610100900460ff1615808015611a1457505f54600160ff909116105b80611a2d5750303b158015611a2d57505f5460ff166001145b611a955760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611ab6575f805461ff0019166101001790555b6001600160a01b038216611add576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015611632575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b03163314611b6b5760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314611bff5760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611c65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c899190614012565b15611ca75760405163840a48d560e01b815260040160405180910390fd5b8251845114611cc9576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611d2c57611d2483858381518110611cea57611cea6140f2565b6020026020010151878481518110611d0457611d046140f2565b60200260200101516001600160a01b0316612d069092919063ffffffff16565b600101611ccb565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611d99573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dbd9190614012565b15611ddb5760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f819003611e0f57604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b90049091166080820152611e76611e6e8361221e565b825188612d58565b5f805b858110156120d65736878783818110611e9457611e946140f2565b9050602002810190611ea691906142be565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f1657611f16613c5b565b6002811115611f2757611f27613c5b565b9052509050600181606001516002811115611f4457611f44613c5b565b14611f505750506120ce565b856001600160401b031681604001516001600160401b031610611f745750506120ce565b5f8080611f84848a8f3588612e19565b60208b0180519396509194509250611f9b826142d2565b62ffffff16905250608088018051849190611fb79083906142ef565b6001600160401b0316905250606088018051839190611fd790839061430e565b60070b905250611fe781886142ef565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561208b5761208b613c5b565b021790555050604051863591506001600160401b038b16907fe4866335761a51dcaff766448ab0af6064291ee5dc94e68492bb9cd757c1e350905f90a350505050505b600101611e79565b506001600160401b038084165f908152603b6020526040812080548493919291612102918591166142ef565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506109bb82612f2f565b5f815f81518110612142576121426140f2565b60200260200101519050919050565b5f81600381518110612165576121656140f2565b60200260200101515f5f1b14159050919050565b612185600360206140c8565b6121926020830183614072565b9050146121b2576040516313717da960e21b815260040160405180910390fd5b6122016121c26020830183614072565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508692505084359050600361314f565b611632576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561227c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a0919061433d565b9050806001600160401b03165f036122cb576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b031611156122ec5760016122ee565b5f5b9392505050565b600884146123165760405163200591bd60e01b815260040160405180910390fd5b5f61232088613184565b90508061232f6028600161418b565b612339919061418b565b6123449060206140c8565b8314612363576040516313717da960e21b815260040160405180910390fd5b5f61239f8787808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506131ac92505050565b90505f64ffffffffff84166123b66028600161418b565b600b901b17905061240086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d925086915085905061314f565b61241d576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b0316156124595760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603612487576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b03166124a3633b9aca004761428c565b6124ad919061429f565b90508180156124c357506001600160401b038116155b156124e1576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a001604052806124f642611388565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff000000000000000019909216919091179055905061255a81612f2f565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f5f836001600160a01b03166040515f60405180830381855afa9150503d805f81146125f1576040519150601f19603f3d011682016040523d82523d5f602084013e6125f6565b606091505b5091509150818015612609575080516020145b6126265760405163c90158af60e01b815260040160405180910390fd5b61148e81614358565b5f815160301461265257604051634f88323960e11b815260040160405180910390fd5b6040516002906126689084905f9060200161437b565b60408051601f19818403018152908290526126829161415c565b602060405180830381855afa15801561269d573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061107a91906141bd565b804710156127105760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611a8c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612759576040519150601f19603f3d011682016040523d82523d5f602084013e61275e565b606091505b50509050806119f15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611a8c565b5f5f6128128484808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061212f92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561288057612880613c5b565b600281111561289157612891613c5b565b90525090505f816060015160028111156128ad576128ad613c5b565b146128cb576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b0380166129108686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061347a92505050565b6001600160401b03160361293757604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661297c8686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061349e92505050565b6001600160401b0316146129a357604051632eade63760e01b815260040160405180910390fd5b6129ab612cd6565b6129b490614358565b6129ef8686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506134b592505050565b1480612a4457506129fe6134c9565b612a0790614358565b612a428686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506134b592505050565b145b612a6157604051633772dd5360e11b815260040160405180910390fd5b5f612a9d8686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506134e592505050565b9050612ab6612aab8c61221e565b8b88888c8c8f6122f5565b60398054905f612ac58361439f565b9091555050603a545f90600160401b90046001600160401b031615612afc57603a54600160401b90046001600160401b0316612b09565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612bde57612bde613c5b565b021790555050603d8054849250601390612c09908490600160981b90046001600160401b03166142ef565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f101790c2993f6a4d962bd17c786126823ba1c4cf04ff4cccb2659d50fb20aee884604051612c5e91815260200190565b60405180910390a1604080518581526001600160401b03838116602083015284168183015290517fcdae700d7241bc027168c53cf6f889763b0a2c88a65d77fc13a8a9fef0d8605f9181900360600190a1612cc6633b9aca006001600160401b0384166140c8565b9c9b505050505050505050505050565b604051606090612cf290600160f81b905f9030906020016143b7565b604051602081830303815290604052905090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526119f19084906134fc565b5f612d6284613184565b9050612d6f81600361418b565b612d7a9060206140c8565b612d876020840184614072565b905014612da7576040516313717da960e21b815260040160405180910390fd5b6003811b600c17612dfc612dbe6020850185614072565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525088925050863590508461314f565b611d2c576040516309bde33960e01b815260040160405180910390fd5b5f5f5f866020015192505f612e3286895f0151876135cf565b9050836001600160401b0316816001600160401b031614612ea657612e5784826143f5565b60408051873581526001600160401b038a8116602083015284168183015290519194507fcdae700d7241bc027168c53cf6f889763b0a2c88a65d77fc13a8a9fef0d8605f919081900360600190a15b6001600160401b0380821660208a0181905290881660408a01525f03612f245760398054905f612ed583614424565b909155505060026060890152612eea83614439565b6040519092508535906001600160401b038916907f5ce0aa04ae51d52da6e680fbe0336d2e2432f7c3dc2d4f3193204c57b9072107905f90a35b509450945094915050565b8051603c556020810151603d805460408401516060850151608086015162ffffff9095166affffffffffffffffffffff19909316831763010000006001600160401b0393841602176fffffffffffffffffffffffffffffffff60581b1916600160581b9183169190910267ffffffffffffffff60981b191617600160981b919094160292909217905515612fc05750565b60808101516034545f91612fdc916001600160401b03166142ef565b90505f82606001518360400151612ff3919061430e565b60408401516034805492935090915f906130179084906001600160401b03166142ef565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061306790633b9aca009085166140c8565b90505f61307c633b9aca00600785900b61445e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015613132575f5ffd5b505af1158015613144573d5f5f3e3d5ffd5b505050505050505050565b5f8361316e576040516329e7276760e11b815260040160405180910390fd5b8361317a8685856136ad565b1495945050505050565b5f8082600181111561319857613198613c5b565b146131a457600661107a565b600592915050565b5f60018251116131cf5760405163f8ef036760e01b815260040160405180910390fd5b6131d982516137a0565b6131f65760405163f6558f5160e01b815260040160405180910390fd5b5f60028351613205919061428c565b90505f816001600160401b0381111561322057613220613e09565b604051908082528060200260200182016040528015613249578160200160208202803683370190505b5090505f5b828110156133435760028561326383836140c8565b81518110613273576132736140f2565b60200260200101518683600261328991906140c8565b61329490600161418b565b815181106132a4576132a46140f2565b60200260200101516040516020016132c6929190918252602082015260400190565b60408051601f19818403018152908290526132e09161415c565b602060405180830381855afa1580156132fb573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061331e91906141bd565b828281518110613330576133306140f2565b602090810291909101015260010161324e565b505b816001146134575761335860028361428c565b91505f5b828110156134515760028261337183836140c8565b81518110613381576133816140f2565b60200260200101518383600261339791906140c8565b6133a290600161418b565b815181106133b2576133b26140f2565b60200260200101516040516020016133d4929190918252602082015260400190565b60408051601f19818403018152908290526133ee9161415c565b602060405180830381855afa158015613409573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061342c91906141bd565b82828151811061343e5761343e6140f2565b602090810291909101015260010161335c565b50613345565b805f81518110613469576134696140f2565b602002602001015192505050919050565b5f61107a82600581518110613491576134916140f2565b60200260200101516137bf565b5f61107a82600681518110613491576134916140f2565b5f81600181518110612142576121426140f2565b604051606090612cf290600160f91b905f9030906020016143b7565b5f61107a82600281518110613491576134916140f2565b5f613550826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138269092919063ffffffff16565b905080515f14806135705750808060200190518101906135709190614012565b6119f15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611a8c565b5f6135dc6026600161418b565b6135e79060206140c8565b6135f46040840184614072565b905014613614576040516313717da960e21b815260040160405180910390fd5b5f61362060048561448d565b64ffffffffff1690506136796136396040850185614072565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250899250505060208601358461314f565b613696576040516309bde33960e01b815260040160405180910390fd5b6136a4836020013585613834565b95945050505050565b5f83515f141580156136ca5750602084516136c891906144b6565b155b6136e7576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b855181116137775761370b6002856144b6565b5f0361373d5781515f528086015160205260208260405f60026107d05a03fa613732575f5ffd5b600284049350613765565b808601515f52815160205260208260405f60026107d05a03fa61375e575f5ffd5b6002840493505b61377060208261418b565b90506136f8565b508215613797576040516363df817160e01b815260040160405180910390fd5b51949350505050565b5f811580159061107a57506137b66001836140df565b82161592915050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b606061148e84845f85613860565b5f806138416004846144c9565b61384c9060406144f2565b64ffffffffff16905061148e84821b6137bf565b6060824710156138c15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611a8c565b5f5f866001600160a01b031685876040516138dc919061415c565b5f6040518083038185875af1925050503d805f8114613916576040519150601f19603f3d011682016040523d82523d5f602084013e61391b565b606091505b509150915061392c87838387613937565b979650505050505050565b606083156139a55782515f0361399e576001600160a01b0385163b61399e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611a8c565b508161148e565b61148e83838151156139ba5781518083602001fd5b8060405162461bcd60e51b8152600401611a8c9190614512565b6001600160401b03811681146139e8575f5ffd5b50565b5f604082840312156139fb575f5ffd5b50919050565b5f5f5f60608486031215613a13575f5ffd5b8335613a1e816139d4565b925060208401356001600160401b03811115613a38575f5ffd5b613a44868287016139eb565b92505060408401356001600160401b03811115613a5f575f5ffd5b613a6b868287016139eb565b9150509250925092565b5f5f83601f840112613a85575f5ffd5b5081356001600160401b03811115613a9b575f5ffd5b6020830191508360208260051b8501011115613ab5575f5ffd5b9250929050565b5f5f60208385031215613acd575f5ffd5b82356001600160401b03811115613ae2575f5ffd5b613aee85828601613a75565b90969095509350505050565b5f5f5f5f5f5f5f5f60a0898b031215613b11575f5ffd5b8835613b1c816139d4565b975060208901356001600160401b03811115613b36575f5ffd5b613b428b828c016139eb565b97505060408901356001600160401b03811115613b5d575f5ffd5b613b698b828c01613a75565b90975095505060608901356001600160401b03811115613b87575f5ffd5b613b938b828c01613a75565b90955093505060808901356001600160401b03811115613bb1575f5ffd5b613bbd8b828c01613a75565b999c989b5096995094979396929594505050565b5f60208284031215613be1575f5ffd5b81356122ee816139d4565b5f5f83601f840112613bfc575f5ffd5b5081356001600160401b03811115613c12575f5ffd5b602083019150836020828501011115613ab5575f5ffd5b5f5f60208385031215613c3a575f5ffd5b82356001600160401b03811115613c4f575f5ffd5b613aee85828601613bec565b634e487b7160e01b5f52602160045260245ffd5b60038110613c8b57634e487b7160e01b5f52602160045260245ffd5b9052565b6020810161107a8284613c6f565b5f60208284031215613cad575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151613d006060840182613c6f565b5092915050565b80151581146139e8575f5ffd5b5f60208284031215613d24575f5ffd5b81356122ee81613d07565b5f5f5f5f5f60608688031215613d43575f5ffd5b85356001600160401b03811115613d58575f5ffd5b613d6488828901613bec565b90965094505060208601356001600160401b03811115613d82575f5ffd5b613d8e88828901613bec565b96999598509660400135949350505050565b6001600160a01b03811681146139e8575f5ffd5b8035613dbf81613da0565b919050565b5f5f60408385031215613dd5575f5ffd5b8235613de081613da0565b946020939093013593505050565b5f60208284031215613dfe575f5ffd5b81356122ee81613da0565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613e4557613e45613e09565b604052919050565b5f6001600160401b03821115613e6557613e65613e09565b5060051b60200190565b5f82601f830112613e7e575f5ffd5b8135613e91613e8c82613e4d565b613e1d565b8082825260208201915060208360051b860101925085831115613eb2575f5ffd5b602085015b83811015613ecf578035835260209283019201613eb7565b5095945050505050565b5f5f5f60608486031215613eeb575f5ffd5b83356001600160401b03811115613f00575f5ffd5b8401601f81018613613f10575f5ffd5b8035613f1e613e8c82613e4d565b8082825260208201915060208360051b850101925088831115613f3f575f5ffd5b6020840193505b82841015613f6a578335613f5981613da0565b825260209384019390910190613f46565b955050505060208401356001600160401b03811115613f87575f5ffd5b613f9386828701613e6f565b925050613fa260408501613db4565b90509250925092565b5f5f5f60408486031215613fbd575f5ffd5b83356001600160401b03811115613fd2575f5ffd5b613fde868287016139eb565b93505060208401356001600160401b03811115613ff9575f5ffd5b61400586828701613a75565b9497909650939450505050565b5f60208284031215614022575f5ffd5b81516122ee81613d07565b5f5f8335601e19843603018112614042575f5ffd5b8301803591506001600160401b0382111561405b575f5ffd5b6020019150600581901b3603821315613ab5575f5ffd5b5f5f8335601e19843603018112614087575f5ffd5b8301803591506001600160401b038211156140a0575f5ffd5b602001915036819003821315613ab5575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761107a5761107a6140b4565b8181038181111561107a5761107a6140b4565b634e487b7160e01b5f52603260045260245ffd5b5f8235603e1983360301811261411a575f5ffd5b9190910192915050565b8284823760c09190911b6001600160c01b0319169101908152600801919050565b5f81518060208401855e5f93019283525090919050565b5f6122ee8284614145565b5f60208284031215614177575f5ffd5b813564ffffffffff811681146122ee575f5ffd5b8082018082111561107a5761107a6140b4565b838582375f8482015f8152838582375f93019283525090949350505050565b5f602082840312156141cd575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f61423d60808301888a6141d4565b828103602084015261424f81886141fc565b905082810360408401526142648186886141d4565b915050826060830152979650505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261429a5761429a614278565b500490565b6001600160401b03828116828216039081111561107a5761107a6140b4565b5f8235605e1983360301811261411a575f5ffd5b5f62ffffff8216806142e6576142e66140b4565b5f190192915050565b6001600160401b03818116838216019081111561107a5761107a6140b4565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff198212171561107a5761107a6140b4565b5f6020828403121561434d575f5ffd5b81516122ee816139d4565b805160208083015191908110156139fb575f1960209190910360031b1b16919050565b5f6143868285614145565b6001600160801b03199390931683525050601001919050565b5f600182016143b0576143b06140b4565b5060010190565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff8213171561107a5761107a6140b4565b5f81614432576144326140b4565b505f190190565b5f8160070b677fffffffffffffff198103614456576144566140b4565b5f0392915050565b8082025f8212600160ff1b84141615614479576144796140b4565b818105831482151761107a5761107a6140b4565b5f64ffffffffff8316806144a3576144a3614278565b8064ffffffffff84160491505092915050565b5f826144c4576144c4614278565b500690565b5f64ffffffffff8316806144df576144df614278565b8064ffffffffff84160691505092915050565b64ffffffffff8181168382160290811690818114613d0057613d006140b4565b602081525f6122ee60208301846141fc56fea2646970667358221220150997dc569abe69c84016680c4f6a38f3415e4ee7f3d3d9fc5a6b2be1e80f2f64736f6c634300081e0033", } // EigenPodABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/EigenPodManager/binding.go b/pkg/bindings/EigenPodManager/binding.go index 8ec584c1e7..360bfb0ffa 100644 --- a/pkg/bindings/EigenPodManager/binding.go +++ b/pkg/bindings/EigenPodManager/binding.go @@ -38,7 +38,7 @@ type OperatorSet struct { // EigenPodManagerMetaData contains all meta data concerning the EigenPodManager contract. var EigenPodManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodBeacon\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"},{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainSlashingFactor\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnableETHShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createPod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnOrRedistributableShares\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_initPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"numPods\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"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\":\"pectraForkTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwnerDepositShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofTimestampSetter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"prevRestakedBalanceWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"balanceDeltaWei\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPectraForkTimestamp\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setProofTimestampSetter\",\"inputs\":[{\"name\":\"newProofTimestampSetter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BeaconChainETHDeposited\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainETHWithdrawalCompleted\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainSlashingFactorDecreased\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"prevBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableETHSharesIncreased\",\"inputs\":[{\"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\":\"NewTotalShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newTotalShares\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"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\":\"PectraForkTimestampSet\",\"inputs\":[{\"name\":\"newPectraForkTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodDeployed\",\"inputs\":[{\"name\":\"eigenPod\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodSharesUpdated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProofTimestampSetterSet\",\"inputs\":[{\"name\":\"newProofTimestampSetter\",\"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\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EigenPodAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyWithdrawalsNotCompleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyProofTimestampSetter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNegative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNotMultipleOfGwei\",\"inputs\":[]}]", - Bin: "0x610100604052348015610010575f5ffd5b50604051612ca0380380612ca083398101604081905261002f9161015c565b838383836001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e052610080610089565b505050506101b8565b5f54610100900460ff16156100f45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610143575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610159575f5ffd5b50565b5f5f5f5f6080858703121561016f575f5ffd5b845161017a81610145565b602086015190945061018b81610145565b604086015190935061019c81610145565b60608601519092506101ad81610145565b939692955090935050565b60805160a05160c05160e051612a6f6102315f395f81816105e00152818161074f015281816109a801528181610a4e01528181610ba901528181610f260152610fdb01525f81816102800152818161107101526117ce01525f61041f01525f81816104660152818161143901526119eb0152612a6f5ff3fe6080604052600436106101e6575f3560e01c8063886f119511610108578063a6a509be1161009d578063f2fde38b1161006d578063f2fde38b14610602578063f5d4fed314610621578063f6848d2414610636578063fabc1cbc1461066f578063fe243a171461068e575f5ffd5b8063a6a509be14610570578063cd6dc68714610585578063d48e8894146105a4578063ea4d3c9b146105cf575f5ffd5b80639ba06275116100d85780639ba06275146104df578063a1ca780b14610513578063a38406a314610532578063a3d75e0914610551575f5ffd5b8063886f1195146104555780638da5cb5b146104885780639104c319146104a55780639b4e4634146104cc575f5ffd5b8063595edbcb1161017e578063715018a61161014e578063715018a6146103db578063724af423146103ef57806374cdd7981461040e57806384d8106214610441575f5ffd5b8063595edbcb146103405780635a26fbf41461035f5780635ac86ab71461037e5780635c975abb146103bd575f5ffd5b80632eae418c116101b95780632eae418c146102ba5780633fb99ca5146102d957806350ff7225146102f8578063595c6a671461032c575f5ffd5b80630d1e9de1146101ea578063136439dd1461020b5780632704351a1461022a578063292b7b2b1461026f575b5f5ffd5b3480156101f5575f5ffd5b50610209610204366004611cbe565b6106ad565b005b348015610216575f5ffd5b50610209610225366004611cd9565b61070a565b348015610235575f5ffd5b50609f5461025190600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b34801561027a575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610266565b3480156102c5575f5ffd5b506102096102d4366004611cf0565b610744565b3480156102e4575f5ffd5b506102096102f3366004611d3e565b61099d565b348015610303575f5ffd5b50610317610312366004611d88565b610a41565b60408051928352602083019190915201610266565b348015610337575f5ffd5b50610209610af1565b34801561034b575f5ffd5b50609f546102a2906001600160a01b031681565b34801561036a575f5ffd5b50610209610379366004611dc6565b610b05565b348015610389575f5ffd5b506103ad610398366004611ded565b606654600160ff9092169190911b9081161490565b6040519015158152602001610266565b3480156103c8575f5ffd5b506066545b604051908152602001610266565b3480156103e6575f5ffd5b50610209610b8c565b3480156103fa575f5ffd5b506103cd610409366004611d88565b610b9d565b348015610419575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561044c575f5ffd5b506102a2610ce2565b348015610460575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b348015610493575f5ffd5b506033546001600160a01b03166102a2565b3480156104b0575f5ffd5b506102a273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102096104da366004611e4b565b610d45565b3480156104ea575f5ffd5b506102a26104f9366004611cbe565b60986020525f90815260409020546001600160a01b031681565b34801561051e575f5ffd5b5061020961052d366004611ebe565b610df6565b34801561053d575f5ffd5b506102a261054c366004611cbe565b611017565b34801561055c575f5ffd5b5061025161056b366004611cbe565b6110e8565b34801561057b575f5ffd5b506103cd60995481565b348015610590575f5ffd5b5061020961059f366004611ef0565b611148565b3480156105af575f5ffd5b506103cd6105be366004611cbe565b609b6020525f908152604090205481565b3480156105da575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561060d575f5ffd5b5061020961061c366004611cbe565b611264565b34801561062c575f5ffd5b506103cd609e5481565b348015610641575f5ffd5b506103ad610650366004611cbe565b6001600160a01b039081165f9081526098602052604090205416151590565b34801561067a575f5ffd5b50610209610689366004611cd9565b6112dd565b348015610699575f5ffd5b506103cd6106a8366004611f1a565b61134a565b6106b56113ca565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b610712611424565b60665481811681146107375760405163c61dca5d60e01b815260040160405180910390fd5b610740826114c7565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461078d5760405163f739589b60e01b815260040160405180910390fd5b610795611504565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146107d257604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166107f9576040516339b190bb60e11b815260040160405180910390fd5b5f81136108195760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b6020526040812054908290821215610913575f61084583611f65565b90505f8185111561086357508061085c8186611f7f565b9250610869565b505f9150835b5f6108748286611f92565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906108c49085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161090791815260200190565b60405180910390a25050505b801561098b576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610974575f5ffd5b505af1158015610986573d5f5f3e3d5ffd5b505050505b5050610997600160c955565b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e65760405163f739589b60e01b815260040160405180910390fd5b6109ee611504565b80609e5f8282546109ff9190611fb9565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610997600160c955565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8c5760405163f739589b60e01b815260040160405180910390fd5b610a94611504565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610ad157604051632711b74d60e11b815260040160405180910390fd5b610adb858461155d565b91509150610ae9600160c955565b935093915050565b610af9611424565b610b035f196114c7565b565b609f546001600160a01b03163314610b3057604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd33906020016106ff565b610b946113ca565b610b035f6116a4565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610be75760405163f739589b60e01b815260040160405180910390fd5b610bef611504565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610c2c57604051632711b74d60e11b815260040160405180910390fd5b5f610c36836116f5565b6001600160a01b0386165f908152609b6020526040902054610c589190611fcc565b90505f811215610c7b5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610cc79084815260200190565b60405180910390a29050610cdb600160c955565b9392505050565b5f5f610ced8161175e565b610cf5611504565b335f908152609860205260409020546001600160a01b031615610d2b5760405163031a852160e21b815260040160405180910390fd5b5f610d34611789565b925050610d41600160c955565b5090565b5f610d4f8161175e565b610d57611504565b335f908152609860205260409020546001600160a01b031680610d7f57610d7c611789565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610db5908b908b908b908b908b9060040161201a565b5f604051808303818588803b158015610dcc575f5ffd5b505af1158015610dde573d5f5f3e3d5ffd5b505050505050610dee600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610e31576040516312e16d7160e11b815260040160405180910390fd5b610e39611504565b6001600160a01b038416610e60576040516339b190bb60e11b815260040160405180910390fd5b610e6e633b9aca0083612067565b15610e8c576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ec557604051634b692bcf60e01b815260040160405180910390fd5b5f831315610f86575f5f610ed9878661155d565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015610f69575f5ffd5b505af1158015610f7b573d5f5f3e3d5ffd5b50505050505061100c565b5f83121561100c575f610fa28686610f9d87611f65565b6118e4565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce9060640161095d565b50610997600160c955565b6001600160a01b038082165f90815260986020526040812054909116806110e2576110df836001600160a01b03165f1b60405180610940016040528061090e815260200161212c61090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526110c4929160200161209d565b604051602081830303815290604052805190602001206119dd565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061113e57670de0b6b3a7640000610cdb565b6020015192915050565b5f54610100900460ff161580801561116657505f54600160ff909116105b8061117f5750303b15801561117f57505f5460ff166001145b6111e75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611208575f805461ff0019166101001790555b611211836116a4565b61121a826114c7565b801561125f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61126c6113ca565b6001600160a01b0381166112d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016111de565b6112da816116a4565b50565b6112e56119e9565b6066548019821981161461130c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461138857604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b6020526040812054126113c2576001600160a01b0383165f908152609b60205260409020546110df565b505f92915050565b6033546001600160a01b03163314610b035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111de565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611486573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114aa91906120b9565b610b0357604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c954036115565760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016111de565b600260c955565b5f806001600160a01b038416611586576040516339b190bb60e11b815260040160405180910390fd5b5f8312156115a75760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916115cb8383611f92565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061161b9086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161165e91815260200190565b60405180910390a25f811361167b575f5f9450945050505061169d565b5f821215611690575f9450925061169d915050565b50925083915061169d9050565b9250929050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610d415760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016111de565b606654600160ff83161b908116036112da5760405163840a48d560e01b815260040160405180910390fd5b5f60995f8154611798906120d8565b9091555060408051610940810190915261090e8082525f91611835918391339161212c6020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052611821929160200161209d565b604051602081830303815290604052611a9a565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611876575f5ffd5b505af1158015611888573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f806118f08385611f7f565b90505f6118fc866110e8565b90505f61191467ffffffffffffffff83168488611b9c565b90505f61192182846120f0565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f6110df838330611c81565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a699190612110565b6001600160a01b0316336001600160a01b031614610b035760405163794821ff60e01b815260040160405180910390fd5b5f83471015611aeb5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016111de565b81515f03611b3b5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016111de565b8282516020840186f590506001600160a01b038116610cdb5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016111de565b5f80805f19858709858702925082811083820303915050805f03611bd357838281611bc957611bc9612053565b0492505050610cdb565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016111de565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146112da575f5ffd5b5f60208284031215611cce575f5ffd5b8135610cdb81611caa565b5f60208284031215611ce9575f5ffd5b5035919050565b5f5f5f5f60808587031215611d03575f5ffd5b8435611d0e81611caa565b93506020850135611d1e81611caa565b92506040850135611d2e81611caa565b9396929550929360600135925050565b5f5f5f5f84860360a0811215611d52575f5ffd5b6040811215611d5f575f5ffd5b50849350604084013592506060840135611d7881611caa565b9396929550929360800135925050565b5f5f5f60608486031215611d9a575f5ffd5b8335611da581611caa565b92506020840135611db581611caa565b929592945050506040919091013590565b5f60208284031215611dd6575f5ffd5b813567ffffffffffffffff81168114610cdb575f5ffd5b5f60208284031215611dfd575f5ffd5b813560ff81168114610cdb575f5ffd5b5f5f83601f840112611e1d575f5ffd5b50813567ffffffffffffffff811115611e34575f5ffd5b60208301915083602082850101111561169d575f5ffd5b5f5f5f5f5f60608688031215611e5f575f5ffd5b853567ffffffffffffffff811115611e75575f5ffd5b611e8188828901611e0d565b909650945050602086013567ffffffffffffffff811115611ea0575f5ffd5b611eac88828901611e0d565b96999598509660400135949350505050565b5f5f5f60608486031215611ed0575f5ffd5b8335611edb81611caa565b95602085013595506040909401359392505050565b5f5f60408385031215611f01575f5ffd5b8235611f0c81611caa565b946020939093013593505050565b5f5f60408385031215611f2b575f5ffd5b8235611f3681611caa565b91506020830135611f4681611caa565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b8201611f7957611f79611f51565b505f0390565b818103818111156110e2576110e2611f51565b8082018281125f831280158216821582161715611fb157611fb1611f51565b505092915050565b808201808211156110e2576110e2611f51565b8181035f831280158383131683831282161715611feb57611feb611f51565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f61202d606083018789611ff2565b8281036020840152612040818688611ff2565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261208157634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6120b16120ab8386612086565b84612086565b949350505050565b5f602082840312156120c9575f5ffd5b81518015158114610cdb575f5ffd5b5f600182016120e9576120e9611f51565b5060010190565b67ffffffffffffffff82811682821603908111156110e2576110e2611f51565b5f60208284031215612120575f5ffd5b8151610cdb81611caa56fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f79a7458a495009ee379467e6aa44a27b2c166a7941d7e98efcd7a87a494a9a464736f6c634300081e0033", + Bin: "0x610100604052348015610010575f5ffd5b50604051612ca0380380612ca083398101604081905261002f9161015c565b838383836001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e052610080610089565b505050506101b8565b5f54610100900460ff16156100f45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610143575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610159575f5ffd5b50565b5f5f5f5f6080858703121561016f575f5ffd5b845161017a81610145565b602086015190945061018b81610145565b604086015190935061019c81610145565b60608601519092506101ad81610145565b939692955090935050565b60805160a05160c05160e051612a6f6102315f395f81816105e00152818161074f015281816109a801528181610a4e01528181610ba901528181610f260152610fdb01525f81816102800152818161107101526117ce01525f61041f01525f81816104660152818161143901526119eb0152612a6f5ff3fe6080604052600436106101e6575f3560e01c8063886f119511610108578063a6a509be1161009d578063f2fde38b1161006d578063f2fde38b14610602578063f5d4fed314610621578063f6848d2414610636578063fabc1cbc1461066f578063fe243a171461068e575f5ffd5b8063a6a509be14610570578063cd6dc68714610585578063d48e8894146105a4578063ea4d3c9b146105cf575f5ffd5b80639ba06275116100d85780639ba06275146104df578063a1ca780b14610513578063a38406a314610532578063a3d75e0914610551575f5ffd5b8063886f1195146104555780638da5cb5b146104885780639104c319146104a55780639b4e4634146104cc575f5ffd5b8063595edbcb1161017e578063715018a61161014e578063715018a6146103db578063724af423146103ef57806374cdd7981461040e57806384d8106214610441575f5ffd5b8063595edbcb146103405780635a26fbf41461035f5780635ac86ab71461037e5780635c975abb146103bd575f5ffd5b80632eae418c116101b95780632eae418c146102ba5780633fb99ca5146102d957806350ff7225146102f8578063595c6a671461032c575f5ffd5b80630d1e9de1146101ea578063136439dd1461020b5780632704351a1461022a578063292b7b2b1461026f575b5f5ffd5b3480156101f5575f5ffd5b50610209610204366004611cbe565b6106ad565b005b348015610216575f5ffd5b50610209610225366004611cd9565b61070a565b348015610235575f5ffd5b50609f5461025190600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b34801561027a575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610266565b3480156102c5575f5ffd5b506102096102d4366004611cf0565b610744565b3480156102e4575f5ffd5b506102096102f3366004611d3e565b61099d565b348015610303575f5ffd5b50610317610312366004611d88565b610a41565b60408051928352602083019190915201610266565b348015610337575f5ffd5b50610209610af1565b34801561034b575f5ffd5b50609f546102a2906001600160a01b031681565b34801561036a575f5ffd5b50610209610379366004611dc6565b610b05565b348015610389575f5ffd5b506103ad610398366004611ded565b606654600160ff9092169190911b9081161490565b6040519015158152602001610266565b3480156103c8575f5ffd5b506066545b604051908152602001610266565b3480156103e6575f5ffd5b50610209610b8c565b3480156103fa575f5ffd5b506103cd610409366004611d88565b610b9d565b348015610419575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561044c575f5ffd5b506102a2610ce2565b348015610460575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b348015610493575f5ffd5b506033546001600160a01b03166102a2565b3480156104b0575f5ffd5b506102a273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102096104da366004611e4b565b610d45565b3480156104ea575f5ffd5b506102a26104f9366004611cbe565b60986020525f90815260409020546001600160a01b031681565b34801561051e575f5ffd5b5061020961052d366004611ebe565b610df6565b34801561053d575f5ffd5b506102a261054c366004611cbe565b611017565b34801561055c575f5ffd5b5061025161056b366004611cbe565b6110e8565b34801561057b575f5ffd5b506103cd60995481565b348015610590575f5ffd5b5061020961059f366004611ef0565b611148565b3480156105af575f5ffd5b506103cd6105be366004611cbe565b609b6020525f908152604090205481565b3480156105da575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561060d575f5ffd5b5061020961061c366004611cbe565b611264565b34801561062c575f5ffd5b506103cd609e5481565b348015610641575f5ffd5b506103ad610650366004611cbe565b6001600160a01b039081165f9081526098602052604090205416151590565b34801561067a575f5ffd5b50610209610689366004611cd9565b6112dd565b348015610699575f5ffd5b506103cd6106a8366004611f1a565b61134a565b6106b56113ca565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b610712611424565b60665481811681146107375760405163c61dca5d60e01b815260040160405180910390fd5b610740826114c7565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461078d5760405163f739589b60e01b815260040160405180910390fd5b610795611504565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146107d257604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166107f9576040516339b190bb60e11b815260040160405180910390fd5b5f81136108195760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b6020526040812054908290821215610913575f61084583611f65565b90505f8185111561086357508061085c8186611f7f565b9250610869565b505f9150835b5f6108748286611f92565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906108c49085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161090791815260200190565b60405180910390a25050505b801561098b576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610974575f5ffd5b505af1158015610986573d5f5f3e3d5ffd5b505050505b5050610997600160c955565b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e65760405163f739589b60e01b815260040160405180910390fd5b6109ee611504565b80609e5f8282546109ff9190611fb9565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610997600160c955565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8c5760405163f739589b60e01b815260040160405180910390fd5b610a94611504565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610ad157604051632711b74d60e11b815260040160405180910390fd5b610adb858461155d565b91509150610ae9600160c955565b935093915050565b610af9611424565b610b035f196114c7565b565b609f546001600160a01b03163314610b3057604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd33906020016106ff565b610b946113ca565b610b035f6116a4565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610be75760405163f739589b60e01b815260040160405180910390fd5b610bef611504565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610c2c57604051632711b74d60e11b815260040160405180910390fd5b5f610c36836116f5565b6001600160a01b0386165f908152609b6020526040902054610c589190611fcc565b90505f811215610c7b5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610cc79084815260200190565b60405180910390a29050610cdb600160c955565b9392505050565b5f5f610ced8161175e565b610cf5611504565b335f908152609860205260409020546001600160a01b031615610d2b5760405163031a852160e21b815260040160405180910390fd5b5f610d34611789565b925050610d41600160c955565b5090565b5f610d4f8161175e565b610d57611504565b335f908152609860205260409020546001600160a01b031680610d7f57610d7c611789565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610db5908b908b908b908b908b9060040161201a565b5f604051808303818588803b158015610dcc575f5ffd5b505af1158015610dde573d5f5f3e3d5ffd5b505050505050610dee600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610e31576040516312e16d7160e11b815260040160405180910390fd5b610e39611504565b6001600160a01b038416610e60576040516339b190bb60e11b815260040160405180910390fd5b610e6e633b9aca0083612067565b15610e8c576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ec557604051634b692bcf60e01b815260040160405180910390fd5b5f831315610f86575f5f610ed9878661155d565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015610f69575f5ffd5b505af1158015610f7b573d5f5f3e3d5ffd5b50505050505061100c565b5f83121561100c575f610fa28686610f9d87611f65565b6118e4565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce9060640161095d565b50610997600160c955565b6001600160a01b038082165f90815260986020526040812054909116806110e2576110df836001600160a01b03165f1b60405180610940016040528061090e815260200161212c61090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526110c4929160200161209d565b604051602081830303815290604052805190602001206119dd565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061113e57670de0b6b3a7640000610cdb565b6020015192915050565b5f54610100900460ff161580801561116657505f54600160ff909116105b8061117f5750303b15801561117f57505f5460ff166001145b6111e75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611208575f805461ff0019166101001790555b611211836116a4565b61121a826114c7565b801561125f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61126c6113ca565b6001600160a01b0381166112d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016111de565b6112da816116a4565b50565b6112e56119e9565b6066548019821981161461130c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461138857604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b6020526040812054126113c2576001600160a01b0383165f908152609b60205260409020546110df565b505f92915050565b6033546001600160a01b03163314610b035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111de565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611486573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114aa91906120b9565b610b0357604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c954036115565760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016111de565b600260c955565b5f806001600160a01b038416611586576040516339b190bb60e11b815260040160405180910390fd5b5f8312156115a75760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916115cb8383611f92565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061161b9086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161165e91815260200190565b60405180910390a25f811361167b575f5f9450945050505061169d565b5f821215611690575f9450925061169d915050565b50925083915061169d9050565b9250929050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610d415760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016111de565b606654600160ff83161b908116036112da5760405163840a48d560e01b815260040160405180910390fd5b5f60995f8154611798906120d8565b9091555060408051610940810190915261090e8082525f91611835918391339161212c6020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052611821929160200161209d565b604051602081830303815290604052611a9a565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611876575f5ffd5b505af1158015611888573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f806118f08385611f7f565b90505f6118fc866110e8565b90505f61191467ffffffffffffffff83168488611b9c565b90505f61192182846120f0565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f6110df838330611c81565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a699190612110565b6001600160a01b0316336001600160a01b031614610b035760405163794821ff60e01b815260040160405180910390fd5b5f83471015611aeb5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016111de565b81515f03611b3b5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016111de565b8282516020840186f590506001600160a01b038116610cdb5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016111de565b5f80805f19858709858702925082811083820303915050805f03611bd357838281611bc957611bc9612053565b0492505050610cdb565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016111de565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146112da575f5ffd5b5f60208284031215611cce575f5ffd5b8135610cdb81611caa565b5f60208284031215611ce9575f5ffd5b5035919050565b5f5f5f5f60808587031215611d03575f5ffd5b8435611d0e81611caa565b93506020850135611d1e81611caa565b92506040850135611d2e81611caa565b9396929550929360600135925050565b5f5f5f5f84860360a0811215611d52575f5ffd5b6040811215611d5f575f5ffd5b50849350604084013592506060840135611d7881611caa565b9396929550929360800135925050565b5f5f5f60608486031215611d9a575f5ffd5b8335611da581611caa565b92506020840135611db581611caa565b929592945050506040919091013590565b5f60208284031215611dd6575f5ffd5b813567ffffffffffffffff81168114610cdb575f5ffd5b5f60208284031215611dfd575f5ffd5b813560ff81168114610cdb575f5ffd5b5f5f83601f840112611e1d575f5ffd5b50813567ffffffffffffffff811115611e34575f5ffd5b60208301915083602082850101111561169d575f5ffd5b5f5f5f5f5f60608688031215611e5f575f5ffd5b853567ffffffffffffffff811115611e75575f5ffd5b611e8188828901611e0d565b909650945050602086013567ffffffffffffffff811115611ea0575f5ffd5b611eac88828901611e0d565b96999598509660400135949350505050565b5f5f5f60608486031215611ed0575f5ffd5b8335611edb81611caa565b95602085013595506040909401359392505050565b5f5f60408385031215611f01575f5ffd5b8235611f0c81611caa565b946020939093013593505050565b5f5f60408385031215611f2b575f5ffd5b8235611f3681611caa565b91506020830135611f4681611caa565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b8201611f7957611f79611f51565b505f0390565b818103818111156110e2576110e2611f51565b8082018281125f831280158216821582161715611fb157611fb1611f51565b505092915050565b808201808211156110e2576110e2611f51565b8181035f831280158383131683831282161715611feb57611feb611f51565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f61202d606083018789611ff2565b8281036020840152612040818688611ff2565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261208157634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6120b16120ab8386612086565b84612086565b949350505050565b5f602082840312156120c9575f5ffd5b81518015158114610cdb575f5ffd5b5f600182016120e9576120e9611f51565b5060010190565b67ffffffffffffffff82811682821603908111156110e2576110e2611f51565b5f60208284031215612120575f5ffd5b8151610cdb81611caa56fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122000d60ff6e6426be33e4cafc68b25827809667f55791b67de15e8ad4e105918cb64736f6c634300081e0033", } // EigenPodManagerABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/EigenStrategy/binding.go b/pkg/bindings/EigenStrategy/binding.go index 1b3eb28d8a..823bc92483 100644 --- a/pkg/bindings/EigenStrategy/binding.go +++ b/pkg/bindings/EigenStrategy/binding.go @@ -32,7 +32,7 @@ var ( // EigenStrategyMetaData contains all meta data concerning the EigenStrategy contract. var EigenStrategyMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"EIGEN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigen\"}],\"stateMutability\":\"view\"},{\"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\":\"_EIGEN\",\"type\":\"address\",\"internalType\":\"contractIEigen\"},{\"name\":\"_bEIGEN\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"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\":\"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\":[{\"name\":\"amountOut\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ExchangeRateEmitted\",\"inputs\":[{\"name\":\"rate\",\"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\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"error\",\"name\":\"BalanceExceedsMaxTotalDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxPerDepositExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewSharesZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnderlyingToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TotalSharesExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalAmountExceedsTotalDeposits\",\"inputs\":[]}]", - Bin: "0x60c060405234801561000f575f5ffd5b5060405161160138038061160183398101604081905261002e9161014f565b8181806001600160a01b038116610058576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a05261007361007c565b50505050610187565b5f54610100900460ff16156100e75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610136575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014c575f5ffd5b50565b5f5f60408385031215610160575f5ffd5b825161016b81610138565b602084015190925061017c81610138565b809150509250929050565b60805160a0516114366101cb5f395f818161018b015281816103860152818161071e01526107a001525f81816102540152818161094e0152610e4f01526114365ff3fe608060405234801561000f575f5ffd5b506004361061013d575f3560e01c8063886f1195116100b4578063ce7c2ac211610079578063ce7c2ac2146102c4578063d9caed12146102d7578063e3dae51c146102ea578063f3e73875146102fd578063fabc1cbc14610310578063fdc371ce14610323575f5ffd5b8063886f11951461024f5780638c871019146102765780638f6a624014610289578063ab5921e11461029c578063c4d66de8146102b1575f5ffd5b8063485cc95511610105578063485cc955146101d7578063553ca5f8146101ea578063595c6a67146101fd5780635ac86ab7146102055780635c975abb146102345780637a8b26371461023c575f5ffd5b8063136439dd146101415780632495a5991461015657806339b70e38146101865780633a98ef39146101ad57806347e7ef24146101c4575b5f5ffd5b61015461014f366004611129565b610336565b005b603254610169906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101697f000000000000000000000000000000000000000000000000000000000000000081565b6101b660335481565b60405190815260200161017d565b6101b66101d2366004611154565b610370565b6101546101e536600461117e565b61049f565b6101b66101f83660046111b5565b61058a565b61015461059d565b6102246102133660046111e5565b6001805460ff9092161b9081161490565b604051901515815260200161017d565b6001546101b6565b6101b661024a366004611129565b6105b1565b6101697f000000000000000000000000000000000000000000000000000000000000000081565b6101b6610284366004611129565b6105fa565b6101b66102973660046111b5565b610604565b6102a4610611565b60405161017d9190611200565b6101546102bf3660046111b5565b610631565b6101b66102d23660046111b5565b6106f7565b6101b66102e5366004611235565b610789565b6101b66102f8366004611129565b61088b565b6101b661030b366004611129565b6108c2565b61015461031e366004611129565b6108cc565b606454610169906001600160a01b031681565b61033e610939565b60015481811681146103635760405163c61dca5d60e01b815260040160405180910390fd5b61036c826109dc565b5050565b5f5f61037b81610a19565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c4576040516348da714f60e01b815260040160405180910390fd5b6103ce8484610a4f565b6033545f6103de6103e883611287565b90505f6103e86103ec610b08565b6103f69190611287565b90505f610403878361129a565b90508061041084896112ad565b61041a91906112c4565b9550855f0361043c57604051630c392ed360e11b815260040160405180910390fd5b6104468685611287565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561047b57604051632f14e8a360e11b815260040160405180910390fd5b610494826103e860335461048f9190611287565b610b77565b505050505092915050565b5f54610100900460ff16158080156104bd57505f54600160ff909116105b806104d65750303b1580156104d657505f5460ff166001145b6104fb5760405162461bcd60e51b81526004016104f2906112e3565b60405180910390fd5b5f805460ff19166001179055801561051c575f805461ff0019166101001790555b606480546001600160a01b0319166001600160a01b03851617905561054082610bc3565b8015610585575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f61059761024a836106f7565b92915050565b6105a5610939565b6105af5f196109dc565b565b5f5f6103e86033546105c39190611287565b90505f6103e86105d1610b08565b6105db9190611287565b9050816105e885836112ad565b6105f291906112c4565b949350505050565b5f6105978261088b565b5f61059761030b836106f7565b60606040518060800160405280604d81526020016113b4604d9139905090565b5f54610100900460ff161580801561064f57505f54600160ff909116105b806106685750303b15801561066857505f5460ff166001145b6106845760405162461bcd60e51b81526004016104f2906112e3565b5f805460ff1916600117905580156106a5575f805461ff0019166101001790555b6106ae82610bc3565b801561036c575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610765573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105979190611331565b5f600161079581610a19565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107de576040516348da714f60e01b815260040160405180910390fd5b6107e9858585610d0e565b6033548084111561080d57604051630b469df360e41b815260040160405180910390fd5b5f61081a6103e883611287565b90505f6103e8610828610b08565b6108329190611287565b90508161083f87836112ad565b61084991906112c4565b9450610855868461129a565b603355610875610865868361129a565b6103e860335461048f9190611287565b610880888887610d54565b505050509392505050565b5f5f6103e860335461089d9190611287565b90505f6103e86108ab610b08565b6108b59190611287565b9050806105e883866112ad565b5f610597826105b1565b6108d4610e4d565b600154801982198116146108fb5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561099b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bf9190611348565b6105af57604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610a2e816001805460ff9092161b9081161490565b15610a4c5760405163840a48d560e01b815260040160405180910390fd5b50565b6032546001600160a01b0383811691161480610a7857506064546001600160a01b038381169116145b610a9557604051630312abdd60e61b815260040160405180910390fd5b6064546001600160a01b039081169083160361036c57606454604051636f074d1f60e11b8152600481018390526001600160a01b039091169063de0e9a3e906024015f604051808303815f87803b158015610aee575f5ffd5b505af1158015610b00573d5f5f3e3d5ffd5b505050505050565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610b4e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b729190611331565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610bab84670de0b6b3a76400006112ad565b610bb591906112c4565b6040519081526020016106eb565b5f54610100900460ff16610c2d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016104f2565b603280546001600160a01b0319166001600160a01b038316179055610c515f6109dc565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce79190611367565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161480610d3757506064546001600160a01b038381169116145b61058557604051630312abdd60e61b815260040160405180910390fd5b6064546001600160a01b0390811690831603610e395760325460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303815f875af1158015610dba573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dde9190611348565b50606454604051630ea598cb60e41b8152600481018390526001600160a01b039091169063ea598cb0906024015f604051808303815f87803b158015610e22575f5ffd5b505af1158015610e34573d5f5f3e3d5ffd5b505050505b6105856001600160a01b0383168483610efe565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecd9190611382565b6001600160a01b0316336001600160a01b0316146105af5760405163794821ff60e01b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610585928692915f91610f8d91851690849061100c565b905080515f1480610fad575080806020019051810190610fad9190611348565b6105855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104f2565b60606105f284845f85855f5f866001600160a01b03168587604051611031919061139d565b5f6040518083038185875af1925050503d805f811461106b576040519150601f19603f3d011682016040523d82523d5f602084013e611070565b606091505b50915091506110818783838761108c565b979650505050505050565b606083156110fa5782515f036110f3576001600160a01b0385163b6110f35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f2565b50816105f2565b6105f2838381511561110f5781518083602001fd5b8060405162461bcd60e51b81526004016104f29190611200565b5f60208284031215611139575f5ffd5b5035919050565b6001600160a01b0381168114610a4c575f5ffd5b5f5f60408385031215611165575f5ffd5b823561117081611140565b946020939093013593505050565b5f5f6040838503121561118f575f5ffd5b823561119a81611140565b915060208301356111aa81611140565b809150509250929050565b5f602082840312156111c5575f5ffd5b81356111d081611140565b9392505050565b60ff81168114610a4c575f5ffd5b5f602082840312156111f5575f5ffd5b81356111d0816111d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f60608486031215611247575f5ffd5b833561125281611140565b9250602084013561126281611140565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561059757610597611273565b8181038181111561059757610597611273565b808202811582820484141761059757610597611273565b5f826112de57634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f60208284031215611341575f5ffd5b5051919050565b5f60208284031215611358575f5ffd5b815180151581146111d0575f5ffd5b5f60208284031215611377575f5ffd5b81516111d0816111d7565b5f60208284031215611392575f5ffd5b81516111d081611140565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201b2d3bed99173429bf60128af6008c0b97c9b1fbb4878437a11e91c1c47a695e64736f6c634300081e0033", + Bin: "0x60c060405234801561000f575f5ffd5b5060405161160138038061160183398101604081905261002e9161014f565b8181806001600160a01b038116610058576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a05261007361007c565b50505050610187565b5f54610100900460ff16156100e75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610136575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014c575f5ffd5b50565b5f5f60408385031215610160575f5ffd5b825161016b81610138565b602084015190925061017c81610138565b809150509250929050565b60805160a0516114366101cb5f395f818161018b015281816103860152818161071e01526107a001525f81816102540152818161094e0152610e4f01526114365ff3fe608060405234801561000f575f5ffd5b506004361061013d575f3560e01c8063886f1195116100b4578063ce7c2ac211610079578063ce7c2ac2146102c4578063d9caed12146102d7578063e3dae51c146102ea578063f3e73875146102fd578063fabc1cbc14610310578063fdc371ce14610323575f5ffd5b8063886f11951461024f5780638c871019146102765780638f6a624014610289578063ab5921e11461029c578063c4d66de8146102b1575f5ffd5b8063485cc95511610105578063485cc955146101d7578063553ca5f8146101ea578063595c6a67146101fd5780635ac86ab7146102055780635c975abb146102345780637a8b26371461023c575f5ffd5b8063136439dd146101415780632495a5991461015657806339b70e38146101865780633a98ef39146101ad57806347e7ef24146101c4575b5f5ffd5b61015461014f366004611129565b610336565b005b603254610169906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101697f000000000000000000000000000000000000000000000000000000000000000081565b6101b660335481565b60405190815260200161017d565b6101b66101d2366004611154565b610370565b6101546101e536600461117e565b61049f565b6101b66101f83660046111b5565b61058a565b61015461059d565b6102246102133660046111e5565b6001805460ff9092161b9081161490565b604051901515815260200161017d565b6001546101b6565b6101b661024a366004611129565b6105b1565b6101697f000000000000000000000000000000000000000000000000000000000000000081565b6101b6610284366004611129565b6105fa565b6101b66102973660046111b5565b610604565b6102a4610611565b60405161017d9190611200565b6101546102bf3660046111b5565b610631565b6101b66102d23660046111b5565b6106f7565b6101b66102e5366004611235565b610789565b6101b66102f8366004611129565b61088b565b6101b661030b366004611129565b6108c2565b61015461031e366004611129565b6108cc565b606454610169906001600160a01b031681565b61033e610939565b60015481811681146103635760405163c61dca5d60e01b815260040160405180910390fd5b61036c826109dc565b5050565b5f5f61037b81610a19565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c4576040516348da714f60e01b815260040160405180910390fd5b6103ce8484610a4f565b6033545f6103de6103e883611287565b90505f6103e86103ec610b08565b6103f69190611287565b90505f610403878361129a565b90508061041084896112ad565b61041a91906112c4565b9550855f0361043c57604051630c392ed360e11b815260040160405180910390fd5b6104468685611287565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561047b57604051632f14e8a360e11b815260040160405180910390fd5b610494826103e860335461048f9190611287565b610b77565b505050505092915050565b5f54610100900460ff16158080156104bd57505f54600160ff909116105b806104d65750303b1580156104d657505f5460ff166001145b6104fb5760405162461bcd60e51b81526004016104f2906112e3565b60405180910390fd5b5f805460ff19166001179055801561051c575f805461ff0019166101001790555b606480546001600160a01b0319166001600160a01b03851617905561054082610bc3565b8015610585575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f61059761024a836106f7565b92915050565b6105a5610939565b6105af5f196109dc565b565b5f5f6103e86033546105c39190611287565b90505f6103e86105d1610b08565b6105db9190611287565b9050816105e885836112ad565b6105f291906112c4565b949350505050565b5f6105978261088b565b5f61059761030b836106f7565b60606040518060800160405280604d81526020016113b4604d9139905090565b5f54610100900460ff161580801561064f57505f54600160ff909116105b806106685750303b15801561066857505f5460ff166001145b6106845760405162461bcd60e51b81526004016104f2906112e3565b5f805460ff1916600117905580156106a5575f805461ff0019166101001790555b6106ae82610bc3565b801561036c575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610765573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105979190611331565b5f600161079581610a19565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107de576040516348da714f60e01b815260040160405180910390fd5b6107e9858585610d0e565b6033548084111561080d57604051630b469df360e41b815260040160405180910390fd5b5f61081a6103e883611287565b90505f6103e8610828610b08565b6108329190611287565b90508161083f87836112ad565b61084991906112c4565b9450610855868461129a565b603355610875610865868361129a565b6103e860335461048f9190611287565b610880888887610d54565b505050509392505050565b5f5f6103e860335461089d9190611287565b90505f6103e86108ab610b08565b6108b59190611287565b9050806105e883866112ad565b5f610597826105b1565b6108d4610e4d565b600154801982198116146108fb5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561099b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bf9190611348565b6105af57604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610a2e816001805460ff9092161b9081161490565b15610a4c5760405163840a48d560e01b815260040160405180910390fd5b50565b6032546001600160a01b0383811691161480610a7857506064546001600160a01b038381169116145b610a9557604051630312abdd60e61b815260040160405180910390fd5b6064546001600160a01b039081169083160361036c57606454604051636f074d1f60e11b8152600481018390526001600160a01b039091169063de0e9a3e906024015f604051808303815f87803b158015610aee575f5ffd5b505af1158015610b00573d5f5f3e3d5ffd5b505050505050565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610b4e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b729190611331565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610bab84670de0b6b3a76400006112ad565b610bb591906112c4565b6040519081526020016106eb565b5f54610100900460ff16610c2d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016104f2565b603280546001600160a01b0319166001600160a01b038316179055610c515f6109dc565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce79190611367565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161480610d3757506064546001600160a01b038381169116145b61058557604051630312abdd60e61b815260040160405180910390fd5b6064546001600160a01b0390811690831603610e395760325460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303815f875af1158015610dba573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dde9190611348565b50606454604051630ea598cb60e41b8152600481018390526001600160a01b039091169063ea598cb0906024015f604051808303815f87803b158015610e22575f5ffd5b505af1158015610e34573d5f5f3e3d5ffd5b505050505b6105856001600160a01b0383168483610efe565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecd9190611382565b6001600160a01b0316336001600160a01b0316146105af5760405163794821ff60e01b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610585928692915f91610f8d91851690849061100c565b905080515f1480610fad575080806020019051810190610fad9190611348565b6105855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104f2565b60606105f284845f85855f5f866001600160a01b03168587604051611031919061139d565b5f6040518083038185875af1925050503d805f811461106b576040519150601f19603f3d011682016040523d82523d5f602084013e611070565b606091505b50915091506110818783838761108c565b979650505050505050565b606083156110fa5782515f036110f3576001600160a01b0385163b6110f35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f2565b50816105f2565b6105f2838381511561110f5781518083602001fd5b8060405162461bcd60e51b81526004016104f29190611200565b5f60208284031215611139575f5ffd5b5035919050565b6001600160a01b0381168114610a4c575f5ffd5b5f5f60408385031215611165575f5ffd5b823561117081611140565b946020939093013593505050565b5f5f6040838503121561118f575f5ffd5b823561119a81611140565b915060208301356111aa81611140565b809150509250929050565b5f602082840312156111c5575f5ffd5b81356111d081611140565b9392505050565b60ff81168114610a4c575f5ffd5b5f602082840312156111f5575f5ffd5b81356111d0816111d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f60608486031215611247575f5ffd5b833561125281611140565b9250602084013561126281611140565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561059757610597611273565b8181038181111561059757610597611273565b808202811582820484141761059757610597611273565b5f826112de57634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f60208284031215611341575f5ffd5b5051919050565b5f60208284031215611358575f5ffd5b815180151581146111d0575f5ffd5b5f60208284031215611377575f5ffd5b81516111d0816111d7565b5f60208284031215611392575f5ffd5b81516111d081611140565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220c22464c6f3439ec7baa53cf811ca117cabd4c51ac864d739ab4db3fe2cc834e764736f6c634300081e0033", } // EigenStrategyABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/KeyRegistrar/binding.go b/pkg/bindings/KeyRegistrar/binding.go index 5bb74a3919..e531e56798 100644 --- a/pkg/bindings/KeyRegistrar/binding.go +++ b/pkg/bindings/KeyRegistrar/binding.go @@ -50,7 +50,7 @@ type OperatorSet struct { // KeyRegistrarMetaData contains all meta data concerning the KeyRegistrar contract. var KeyRegistrarMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BN254_KEY_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ECDSA_KEY_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"configureOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"configureOperatorSetWithMinDelay\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"},{\"name\":\"minDelaySeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterKey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"encodeBN254KeyData\",\"inputs\":[{\"name\":\"g1Point\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"g2Point\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"finalizeScheduledRotation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBN254Key\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"g1Point\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"g2Point\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBN254KeyRegistrationMessageHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"keyData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getECDSAAddress\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getECDSAKey\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getECDSAKeyRegistrationMessageHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"keyAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getKeyHash\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorFromSigningKey\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"keyData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCurveType\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isKeyGloballyRegistered\",\"inputs\":[{\"name\":\"keyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRegistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerKey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"keyData\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rotateKey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"newPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinKeyRotationDelay\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"minDelaySeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AggregateBN254KeyUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"newAggregateKey\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"KeyDeregistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"KeyRegistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"},{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"KeyRotationScheduled\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"},{\"name\":\"oldPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"newPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"activateAt\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinKeyRotationDelaySet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"minDelay\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetConfigured\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ConfigurationAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECAddFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECMulFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECPairingFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpModFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKeyFormat\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKeypair\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyAlreadyRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyNotFound\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OperatorAlreadyRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorSetNotConfigured\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorStillSlashable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PendingRotationExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RotationDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroPubkey\",\"inputs\":[]}]", - Bin: "0x60e060405234801561000f575f5ffd5b50604051613bd7380380613bd783398101604081905261002e916100cb565b6001600160a01b03808316608052831660a052808061004c8161005a565b60c052506101fc9350505050565b5f5f829050601f8151111561008d578260405163305a27a960e01b815260040161008491906101a1565b60405180910390fd5b8051610098826101d6565b179392505050565b6001600160a01b03811681146100b4575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156100dd575f5ffd5b83516100e8816100a0565b60208501519093506100f9816100a0565b60408501519092506001600160401b03811115610114575f5ffd5b8401601f81018613610124575f5ffd5b80516001600160401b0381111561013d5761013d6100b7565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016b5761016b6100b7565b604052818152828201602001881015610182575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156101f6575f198160200360031b1b821691505b50919050565b60805160a05160c05161399c61023b5f395f818161049e0152611c2701525f81816101f90152611cd201525f81816103b30152610899015261399c5ff3fe608060405234801561000f575f5ffd5b5060043610610153575f3560e01c80639a43e3fb116100bf578063d40cda1611610079578063d40cda16146103d5578063d9f12db2146103e8578063dab42d7e146103fb578063ea0d81491461041d578063ea194e2e14610430578063f698da2514610443575f5ffd5b80639a43e3fb1461032d578063a2d701f61461034e578063aa165c3014610361578063b05c8f6d14610374578063bd30a0b91461039b578063ca8aa7c7146103ae575f5ffd5b806354fd4d501161011057806354fd4d501461029a5780637690e395146102a25780637cffe48c146102b557806381b2796c146102d55780638256909c146102e857806387ab86f41461031a575f5ffd5b80630934d59714610157578063110304021461017f578063166aa127146101945780633b32a7bd146101c95780634657e26a146101f457806350435add1461021b575b5f5ffd5b61016a610165366004612d29565b61044b565b60405190151581526020015b60405180910390f35b61019261018d366004612d71565b61045f565b005b6101bb7f991b0a3376ce87f8ecc5d70962279ac09cdce934e8b5b9683e73c8ff087c7f8181565b604051908152602001610176565b6101dc6101d7366004612d9a565b610479565b6040516001600160a01b039091168152602001610176565b6101dc7f000000000000000000000000000000000000000000000000000000000000000081565b61028d610229366004612e12565b8151602080840151835180519083015185840151805190850151604080519687019790975295850193909352606084810192909252608084015260a083019190915260c082019290925260e001604051602081830303815290604052905092915050565b6040516101769190612ebd565b61028d610497565b6101bb6102b0366004612f0c565b6104c7565b6102c86102c3366004612f69565b61056f565b6040516101769190612fb7565b6101926102e3366004612fc5565b610595565b6102fb6102f6366004613054565b61078a565b604080516001600160a01b039093168352901515602083015201610176565b610192610328366004612d29565b610878565b61034061033b366004612d9a565b610be4565b60405161017692919061311a565b61019261035c366004613165565b610e7a565b61028d61036f366004612d9a565b610fab565b6101bb7fda86e76deaed01641f80ff5f72c372a038fa5182697aeb967e8b1f9819d58d8181565b61016a6103a9366004612d9a565b6111ab565b6101dc7f000000000000000000000000000000000000000000000000000000000000000081565b6101926103e3366004612fc5565b6111e8565b6101bb6103f63660046131a6565b6113ec565b61016a6104093660046131de565b5f9081526002602052604090205460ff1690565b61019261042b3660046131f5565b611485565b6101bb61043e366004612d9a565b6115bc565b6101bb611789565b5f6104568284611842565b90505b92915050565b815161046a8161190a565b6104748383611933565b505050565b5f6104848383610fab565b61048d9061321e565b60601c9392505050565b60606104c27f00000000000000000000000000000000000000000000000000000000000000006119ad565b905090565b5f5f7fda86e76deaed01641f80ff5f72c372a038fa5182697aeb967e8b1f9819d58d8186865f015187602001518787604051610504929190613276565b6040805191829003822060208301969096526001600160a01b039485169082015292909116606083015263ffffffff16608082015260a081019190915260c001604051602081830303815290604052805190602001209050610565816119ea565b9695505050505050565b5f60015f61057c84611a30565b815260208101919091526040015f205460ff1692915050565b8561059f8161190a565b5f60015f6105ac89611a30565b815260208101919091526040015f9081205460ff1691508160028111156105d5576105d5612f83565b036105f357604051635cd3106d60e11b815260040160405180910390fd5b6105fd8789611842565b505f5f5f61060a8a611a30565b815260208082019290925260409081015f9081206001600160a01b038d1682529092529020805490915088908a9060ff1661066357604051632e40e18760e01b815260040161065a9291906132a3565b60405180910390fd5b505060038101546001600160401b0316156106915760405163a54aa36960e01b815260040160405180910390fd5b5f60045f61069e8b611a30565b815260208101919091526040015f20546001600160401b0316905067fffffffffffffffe1981016106e2576040516310297f8760e11b815260040160405180910390fd5b5f6106ed82426132dd565b90506106fe8a8c8b8b8b8b8a611a8e565b506002830161070e898b8361338c565b5060038301805467ffffffffffffffff19166001600160401b0383161790556040516001600160a01b038c16907f600c8ea5356df2fad359d32cf64544f00ad31ccf4133a70b4da8630b1e3658d190610775908d90889060018901908f908f908990613468565b60405180910390a25050505050505050505050565b5f5f5f60015f61079987611a30565b815260208101919091526040015f9081205460ff16915060018260028111156107c4576107c4612f83565b036107d6575083516020850120610847565b60028260028111156107ea576107ea612f83565b0361082e575f5f86806020019051810190610805919061352c565b60408051808201825283815260209081019283525f938452915190915290209250610847915050565b60405163fdea7c0960e01b815260040160405180910390fd5b5f818152600360205260409020546001600160a01b03168061086988826111ab565b945094505050505b9250929050565b816108828161190a565b6040516309a961f360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631352c3e6906108d0908690869060040161354e565b602060405180830381865afa1580156108eb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090f919061356b565b158284909161093357604051631070287960e01b815260040161065a9291906132a3565b50505f60015f61094285611a30565b815260208101919091526040015f9081205460ff16915081600281111561096b5761096b612f83565b0361098957604051635cd3106d60e11b815260040160405180910390fd5b5f5f5f61099586611a30565b815260208082019290925260409081015f9081206001600160a01b03891682528352819020815160808101909252805460ff161515825260018101805492939192918401916109e3906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0f906132fc565b8015610a5a5780601f10610a3157610100808354040283529160200191610a5a565b820191905f5260205f20905b815481529060010190602001808311610a3d57829003601f168201915b50505050508152602001600282018054610a73906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f906132fc565b8015610aea5780601f10610ac157610100808354040283529160200191610aea565b820191905f5260205f20905b815481529060010190602001808311610acd57829003601f168201915b5050509183525050600391909101546001600160401b0316602090910152805190915084908690610b3057604051632e40e18760e01b815260040161065a9291906132a3565b50505f5f610b3d86611a30565b815260208082019290925260409081015f9081206001600160a01b03891682529092528120805460ff1916815590610b786001830182612b33565b610b85600283015f612b33565b50600301805467ffffffffffffffff191690556040516001600160a01b038616907f28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb644290610bd5908790869061358a565b60405180910390a25050505050565b604080518082019091525f8082526020820152610bff612b6a565b5f60015f610c0c87611a30565b815260208101919091526040015f205460ff1690506002816002811115610c3557610c35612f83565b14610c535760405163fdea7c0960e01b815260040160405180910390fd5b5f5f5f610c5f88611a30565b815260208082019290925260409081015f9081206001600160a01b03891682528352819020815160808101909252805460ff16151582526001810180549293919291840191610cad906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd9906132fc565b8015610d245780601f10610cfb57610100808354040283529160200191610d24565b820191905f5260205f20905b815481529060010190602001808311610d0757829003601f168201915b50505050508152602001600282018054610d3d906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610d69906132fc565b8015610db45780601f10610d8b57610100808354040283529160200191610db4565b820191905f5260205f20905b815481529060010190602001808311610d9757829003601f168201915b5050509183525050600391909101546001600160401b03166020909101528051909150610e1d5750506040805180820182525f80825260208083018290528351808501855282815280820192909252835180850190945282845283019190915292509050610871565b5f610e2782611b5f565b90505f5f5f5f84806020019051810190610e4191906135e9565b604080518082018252948552602080860194909452805180820190915291825291810191909152909c909b509950505050505050505050565b8251610e858161190a565b6001836002811115610e9957610e99612f83565b1480610eb657506002836002811115610eb457610eb4612f83565b145b610ed35760405163fdea7c0960e01b815260040160405180910390fd5b5f60015f610ee087611a30565b815260208101919091526040015f9081205460ff169150816002811115610f0957610f09612f83565b14610f26576040516281f09f60e01b815260040160405180910390fd5b8360015f610f3388611a30565b815260208101919091526040015f20805460ff19166001836002811115610f5c57610f5c612f83565b02179055507fb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e78585604051610f9292919061358a565b60405180910390a1610fa48584611933565b5050505050565b60605f60015f610fba86611a30565b815260208101919091526040015f205460ff1690506001816002811115610fe357610fe3612f83565b146110015760405163fdea7c0960e01b815260040160405180910390fd5b5f5f5f61100d87611a30565b815260208082019290925260409081015f9081206001600160a01b03881682528352819020815160808101909252805460ff1615158252600181018054929391929184019161105b906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611087906132fc565b80156110d25780601f106110a9576101008083540402835291602001916110d2565b820191905f5260205f20905b8154815290600101906020018083116110b557829003601f168201915b505050505081526020016002820180546110eb906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611117906132fc565b80156111625780601f1061113957610100808354040283529160200191611162565b820191905f5260205f20905b81548152906001019060200180831161114557829003601f168201915b5050509183525050600391909101546001600160401b031660209091015280519091506111a15760405180602001604052805f81525092505050610459565b5f61056582611b5f565b5f5f5f6111b785611a30565b815260208082019290925260409081015f9081206001600160a01b038616825290925290205460ff16905092915050565b856111f28161190a565b5f60015f6111ff89611a30565b815260208101919091526040015f9081205460ff16915081600281111561122857611228612f83565b0361124657604051635cd3106d60e11b815260040160405180910390fd5b5f5f61125189611a30565b815260208082019290925260409081015f9081206001600160a01b038c16825290925290205460ff1615611298576040516342ee68b560e01b815260040160405180910390fd5b6112a787898888888887611a8e565b50604051806080016040528060011515815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250938552505060408051602081810183528482528501529092018190529050806113158a611a30565b815260208082019290925260409081015f9081206001600160a01b038d1682528352208251815460ff1916901515178155908201516001820190611359908261362f565b506040820151600282019061136e908261362f565b50606091909101516003909101805467ffffffffffffffff19166001600160401b039092169190911790556040516001600160a01b038916907f1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd906113da908a9085908b908b906136e4565b60405180910390a25050505050505050565b81516020808401516040515f938493611459937f991b0a3376ce87f8ecc5d70962279ac09cdce934e8b5b9683e73c8ff087c7f81938a93928991019485526001600160a01b039384166020860152918316604085015263ffffffff16606084015216608082015260a00190565b60405160208183030381529060405280519060200120905061147a816119ea565b9150505b9392505050565b81516114908161190a565b60018260028111156114a4576114a4612f83565b14806114c1575060028260028111156114bf576114bf612f83565b145b6114de5760405163fdea7c0960e01b815260040160405180910390fd5b5f60015f6114eb86611a30565b815260208101919091526040015f9081205460ff16915081600281111561151457611514612f83565b14611531576040516281f09f60e01b815260040160405180910390fd5b8260015f61153e87611a30565b815260208101919091526040015f20805460ff1916600183600281111561156757611567612f83565b02179055507fb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7848460405161159d92919061358a565b60405180910390a16115b6846001600160401b03611933565b50505050565b5f5f5f5f6115c986611a30565b815260208082019290925260409081015f9081206001600160a01b03871682528352819020815160808101909252805460ff16151582526001810180549293919291840191611617906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611643906132fc565b801561168e5780601f106116655761010080835404028352916020019161168e565b820191905f5260205f20905b81548152906001019060200180831161167157829003601f168201915b505050505081526020016002820180546116a7906132fc565b80601f01602080910402602001604051908101604052809291908181526020018280546116d3906132fc565b801561171e5780601f106116f55761010080835404028352916020019161171e565b820191905f5260205f20905b81548152906001019060200180831161170157829003601f168201915b5050509183525050600391909101546001600160401b031660209091015290505f60018161174b87611a30565b815260208101919091526040015f2054825160ff909116915061177357505f91506104599050565b5f61177d83611b5f565b90506105658183611b9e565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea6117f6611c1f565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f5f5f5f61184f86611a30565b815260208082019290925260409081015f9081206001600160a01b03871682529092529020805490915060ff16611889575f915050610459565b60038101546001600160401b0316158015906118b2575060038101546001600160401b03164210155b1561190157600181016118c86002830182613711565b5060408051602081019091525f815260028201906118e6908261362f565b50600301805467ffffffffffffffff19169055506001610459565b505f9392505050565b61191381611c94565b6119305760405163932d94f760e01b815260040160405180910390fd5b50565b8060045f61194085611a30565b81526020019081526020015f205f6101000a8154816001600160401b0302191690836001600160401b031602179055507f22b2b63b5820f9d933565468845820b939bf5ad654ea6ab5bdd3728f19e4580f82826040516119a19291906137d1565b60405180910390a15050565b60605f6119b983611d3d565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f6119f3611789565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f815f0151826020015163ffffffff16604051602001611a7692919060609290921b6001600160601b031916825260a01b6001600160a01b031916601482015260200190565b604051602081830303815290604052610459906137f5565b5f806001836002811115611aa457611aa4612f83565b03611abe57611ab7898989898989611d64565b9050611ae5565b6002836002811115611ad257611ad2612f83565b0361082e57611ab7898989898989611e56565b5f8181526002602052604090205460ff1615611b1457604051630c7bc20160e11b815260040160405180910390fd5b5f818152600260209081526040808320805460ff191660011790556003909152902080546001600160a01b038a166001600160a01b031990911617905590505b979650505050505050565b6060818101516001600160401b031615801590611b89575081606001516001600160401b03164210155b15611b9657506040015190565b506020015190565b5f6001826002811115611bb357611bb3612f83565b03611bc5575081516020830120610459565b6002826002811115611bd957611bd9612f83565b0361082e575f5f84806020019051810190611bf491906135e9565b505060408051808201825283815260209081019283525f938452915190915290209250610459915050565b60605f611c4b7f00000000000000000000000000000000000000000000000000000000000000006119ad565b9050805f81518110611c5f57611c5f613262565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb890608401602060405180830381865afa158015611d19573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610459919061356b565b5f60ff8216601f81111561045957604051632cd44ac360e21b815260040160405180910390fd5b5f60148414611d865760405163d109118160e01b815260040160405180910390fd5b5f611d918587613818565b60601c905080611db457604051634935505f60e01b815260040160405180910390fd5b5f611df687878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250611b9e915050565b90505f611e04898b856113ec565b9050611e49838288888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505f199250611fc0915050565b5098975050505050505050565b5f60c08414611e785760405163d109118160e01b815260040160405180910390fd5b60408214611e9957604051638baa579f60e01b815260040160405180910390fd5b5f611ea6878988886104c7565b90505f80808080611eb98a8c018c613856565b9350935093509350835f148015611ece575082155b15611eec57604051634935505f60e01b815260040160405180910390fd5b5f80611efa8a8c018c613890565b6040805180820182528381526020808201849052825180840184528b81528082018b90528351808501909452898452908301889052939550919350909190611f468b8484845f80612012565b9a508a9950611f729850505050505050505057604051638baa579f60e01b815260040160405180910390fd5b611fb387878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060029250611b9e915050565b9998505050505050505050565b42811015611fe157604051630819bdcd60e01b815260040160405180910390fd5b611ff56001600160a01b03851684846120da565b6115b657604051638baa579f60e01b815260040160405180910390fd5b5f5f5f61201e8961212e565b90505f61202d8a89898c6121b8565b90505f61204461203d8a8461226c565b8b906122dc565b90505f61208661207f846120796040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061226c565b85906122dc565b905087156120ab576120a28261209a612350565b838c8b612410565b965094506120cb565b6120be826120b7612350565b838c612624565b955085156120cb57600194505b50505050965096945050505050565b5f5f5f6120e7858561285b565b90925090505f8160048111156120ff576120ff612f83565b14801561211d5750856001600160a01b0316826001600160a01b0316145b80610565575061056586868661289a565b604080518082019091525f80825260208201525f808061215b5f5160206139475f395f51905f52866138b0565b90505b61216781612981565b90935091505f5160206139475f395f51905f52828309830361219f576040805180820190915290815260208101919091529392505050565b5f5160206139475f395f51905f5260018208905061215e565b8251602080850151845180519083015186840151805190850151875188870151604080519889018e90528801989098526060870195909552608086019390935260a085019190915260c084015260e08301526101008201526101208101919091525f907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019061014001604051602081830303815290604052805190602001205f1c61226391906138b0565b95945050505050565b604080518082019091525f8082526020820152612287612b8f565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806122b557fe5b50806122d457604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201526122f7612bad565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061233157fe5b50806122d45760405163d4b68fd760e01b815260040160405180910390fd5b612358612b6a565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528681526020808201869052825180840190935286835282018490525f91829190612441612bcb565b5f5b60028110156125f8575f6124588260066138cf565b905084826002811061246c5761246c613262565b6020020151518361247d835f6138e6565b600c811061248d5761248d613262565b60200201528482600281106124a4576124a4613262565b602002015160200151838260016124bb91906138e6565b600c81106124cb576124cb613262565b60200201528382600281106124e2576124e2613262565b60200201515151836124f58360026138e6565b600c811061250557612505613262565b602002015283826002811061251c5761251c613262565b60200201515160016020020151836125358360036138e6565b600c811061254557612545613262565b602002015283826002811061255c5761255c613262565b6020020151602001515f6002811061257657612576613262565b6020020151836125878360046138e6565b600c811061259757612597613262565b60200201528382600281106125ae576125ae613262565b6020020151602001516001600281106125c9576125c9613262565b6020020151836125da8360056138e6565b600c81106125ea576125ea613262565b602002015250600101612443565b50612601612bea565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b6040805180820182528581526020808201859052825180840190935285835282018390525f91612652612bcb565b5f5b6002811015612809575f6126698260066138cf565b905084826002811061267d5761267d613262565b6020020151518361268e835f6138e6565b600c811061269e5761269e613262565b60200201528482600281106126b5576126b5613262565b602002015160200151838260016126cc91906138e6565b600c81106126dc576126dc613262565b60200201528382600281106126f3576126f3613262565b60200201515151836127068360026138e6565b600c811061271657612716613262565b602002015283826002811061272d5761272d613262565b60200201515160016020020151836127468360036138e6565b600c811061275657612756613262565b602002015283826002811061276d5761276d613262565b6020020151602001515f6002811061278757612787613262565b6020020151836127988360046138e6565b600c81106127a8576127a8613262565b60200201528382600281106127bf576127bf613262565b6020020151602001516001600281106127da576127da613262565b6020020151836127eb8360056138e6565b600c81106127fb576127fb613262565b602002015250600101612654565b50612812612bea565b5f6020826101808560086107d05a03fa9050808061282c57fe5b508061284b576040516324ccc79360e21b815260040160405180910390fd5b5051151598975050505050505050565b5f5f825160410361288f576020830151604084015160608501515f1a612883878285856129fd565b94509450505050610871565b505f90506002610871565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016128c29291906138f9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516129009190613919565b5f60405180830381855afa9150503d805f8114612938576040519150601f19603f3d011682016040523d82523d5f602084013e61293d565b606091505b509150915081801561295157506020815110155b801561056557508051630b135d3f60e11b90612976908301602090810190840161392f565b149695505050505050565b5f80805f5160206139475f395f51905f5260035f5160206139475f395f51905f52865f5160206139475f395f51905f52888909090890505f6129f1827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206139475f395f51905f52612aba565b91959194509092505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612a3257505f90506003612ab1565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612a83573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612aab575f60019250925050612ab1565b91505f90505b94509492505050565b5f5f612ac4612bea565b612acc612c08565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280612b0957fe5b5082612b285760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b508054612b3f906132fc565b5f825580601f10612b4e575050565b601f0160209004905f5260205f20908101906119309190612c26565b6040518060400160405280612b7d612c3e565b8152602001612b8a612c3e565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b80821115612c3a575f8155600101612c27565b5090565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b0381168114612c72575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612cad57612cad612c77565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612cdb57612cdb612c77565b604052919050565b5f60408284031215612cf3575f5ffd5b612cfb612c8b565b9050612d0682612c5c565b8152602082013563ffffffff81168114612d1e575f5ffd5b602082015292915050565b5f5f60608385031215612d3a575f5ffd5b612d4383612c5c565b9150612d528460208501612ce3565b90509250929050565b80356001600160401b0381168114612c72575f5ffd5b5f5f60608385031215612d82575f5ffd5b612d8c8484612ce3565b9150612d5260408401612d5b565b5f5f60608385031215612dab575f5ffd5b612db58484612ce3565b9150612d5260408401612c5c565b5f82601f830112612dd2575f5ffd5b612ddc6040612cb3565b806040840185811115612ded575f5ffd5b845b81811015612e07578035845260209384019301612def565b509095945050505050565b5f5f82840360c0811215612e24575f5ffd5b6040811215612e31575f5ffd5b612e39612c8b565b843581526020808601359082015292506080603f1982011215612e5a575f5ffd5b50612e63612c8b565b612e708560408601612dc3565b8152612e7f8560808601612dc3565b6020820152809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6104566020830184612e8f565b5f5f83601f840112612edf575f5ffd5b5081356001600160401b03811115612ef5575f5ffd5b602083019150836020828501011115610871575f5ffd5b5f5f5f5f60808587031215612f1f575f5ffd5b612f2885612c5c565b9350612f378660208701612ce3565b925060608501356001600160401b03811115612f51575f5ffd5b612f5d87828801612ecf565b95989497509550505050565b5f60408284031215612f79575f5ffd5b6104568383612ce3565b634e487b7160e01b5f52602160045260245ffd5b60038110612fb357634e487b7160e01b5f52602160045260245ffd5b9052565b602081016104598284612f97565b5f5f5f5f5f5f60a08789031215612fda575f5ffd5b612fe387612c5c565b9550612ff28860208901612ce3565b945060608701356001600160401b0381111561300c575f5ffd5b61301889828a01612ecf565b90955093505060808701356001600160401b03811115613036575f5ffd5b61304289828a01612ecf565b979a9699509497509295939492505050565b5f5f60608385031215613065575f5ffd5b61306f8484612ce3565b915060408301356001600160401b03811115613089575f5ffd5b8301601f81018513613099575f5ffd5b80356001600160401b038111156130b2576130b2612c77565b6130c5601f8201601f1916602001612cb3565b8181528660208385010111156130d9575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b805f5b60028110156115b65781518452602093840193909101906001016130fb565b5f60c082019050835182526020840151602083015261313d6040830184516130f8565b602083015161314f60808401826130f8565b509392505050565b803560038110612c72575f5ffd5b5f5f5f60808486031215613177575f5ffd5b6131818585612ce3565b925061318f60408501613157565b915061319d60608501612d5b565b90509250925092565b5f5f5f608084860312156131b8575f5ffd5b6131c184612c5c565b92506131d08560208601612ce3565b915061319d60608501612c5c565b5f602082840312156131ee575f5ffd5b5035919050565b5f5f60608385031215613206575f5ffd5b6132108484612ce3565b9150612d5260408401613157565b805160208201516001600160601b031981169190601482101561325b576001600160601b03196001600160601b03198360140360031b1b82161692505b5050919050565b634e487b7160e01b5f52603260045260245ffd5b818382375f9101908152919050565b80516001600160a01b0316825260209081015163ffffffff16910152565b606081016132b18285613285565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610459576104596132c9565b600181811c9082168061331057607f821691505b60208210810361332e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561047457805f5260205f20601f840160051c810160208510156133595750805b601f840160051c820191505b81811015610fa4575f8155600101613365565b5f19600383901b1c191660019190911b1790565b6001600160401b038311156133a3576133a3612c77565b6133b7836133b183546132fc565b83613334565b5f601f8411600181146133e3575f85156133d15750838201355b6133db8682613378565b845550610fa4565b5f83815260208120601f198716915b8281101561341257868501358255602094850194600190920191016133f2565b508682101561342e575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6134728188613285565b61347f6040820187612f97565b60c060608201525f5f8654613493816132fc565b8060c0860152600182165f81146134b157600181146134cd576134fe565b60ff19831660e087015260e082151560051b87010193506134fe565b895f5260205f205f5b838110156134f557815488820160e001526001909101906020016134d6565b870160e0019450505b5050508281036080840152613514818688613440565b915050611b5460a08301846001600160401b03169052565b5f5f6040838503121561353d575f5ffd5b505080516020909101519092909150565b6001600160a01b03831681526060810161147e6020830184613285565b5f6020828403121561357b575f5ffd5b8151801515811461147e575f5ffd5b606081016135988285613285565b61147e6040830184612f97565b5f82601f8301126135b4575f5ffd5b6135be6040612cb3565b8060408401858111156135cf575f5ffd5b845b81811015612e075780518452602093840193016135d1565b5f5f5f5f60c085870312156135fc575f5ffd5b84516020860151909450925061361586604087016135a5565b915061362486608087016135a5565b905092959194509250565b81516001600160401b0381111561364857613648612c77565b61365c8161365684546132fc565b84613334565b6020601f821160018114613689575f83156136775750848201515b6136818482613378565b855550610fa4565b5f84815260208120601f198516915b828110156136b85787850151825560209485019460019092019101613698565b50848210156136d557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6136ee8186613285565b6136fb6040820185612f97565b608060608201525f610565608083018486613440565b81810361371c575050565b61372682546132fc565b6001600160401b0381111561373d5761373d612c77565b61374b8161365684546132fc565b5f601f82116001811461376e575f83156136775750848201546136818482613378565b5f8581526020808220868352908220601f198616925b838110156137a45782860154825560019586019590910190602001613784565b50858310156137c157818501545f19600388901b60f8161c191681555b5050505050600190811b01905550565b606081016137df8285613285565b6001600160401b03831660408301529392505050565b8051602080830151919081101561332e575f1960209190910360031b1b16919050565b80356001600160601b0319811690601484101561384f576001600160601b03196001600160601b03198560140360031b1b82161691505b5092915050565b5f5f5f5f60c08587031215613869575f5ffd5b84359350602085013592506138818660408701612dc3565b91506136248660808701612dc3565b5f5f604083850312156138a1575f5ffd5b50508035926020909101359150565b5f826138ca57634e487b7160e01b5f52601260045260245ffd5b500690565b8082028115828204841417610459576104596132c9565b80820180821115610459576104596132c9565b828152604060208201525f6139116040830184612e8f565b949350505050565b5f82518060208501845e5f920191825250919050565b5f6020828403121561393f575f5ffd5b505191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220727d97481b4af3a6b479ef7c65798222167f40ba1ca8632e2ccde48d0159efe864736f6c634300081e0033", + Bin: "0x60e060405234801561000f575f5ffd5b50604051613bd7380380613bd783398101604081905261002e916100cb565b6001600160a01b03808316608052831660a052808061004c8161005a565b60c052506101fc9350505050565b5f5f829050601f8151111561008d578260405163305a27a960e01b815260040161008491906101a1565b60405180910390fd5b8051610098826101d6565b179392505050565b6001600160a01b03811681146100b4575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156100dd575f5ffd5b83516100e8816100a0565b60208501519093506100f9816100a0565b60408501519092506001600160401b03811115610114575f5ffd5b8401601f81018613610124575f5ffd5b80516001600160401b0381111561013d5761013d6100b7565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016b5761016b6100b7565b604052818152828201602001881015610182575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156101f6575f198160200360031b1b821691505b50919050565b60805160a05160c05161399c61023b5f395f818161049e0152611c2701525f81816101f90152611cd201525f81816103b30152610899015261399c5ff3fe608060405234801561000f575f5ffd5b5060043610610153575f3560e01c80639a43e3fb116100bf578063d40cda1611610079578063d40cda16146103d5578063d9f12db2146103e8578063dab42d7e146103fb578063ea0d81491461041d578063ea194e2e14610430578063f698da2514610443575f5ffd5b80639a43e3fb1461032d578063a2d701f61461034e578063aa165c3014610361578063b05c8f6d14610374578063bd30a0b91461039b578063ca8aa7c7146103ae575f5ffd5b806354fd4d501161011057806354fd4d501461029a5780637690e395146102a25780637cffe48c146102b557806381b2796c146102d55780638256909c146102e857806387ab86f41461031a575f5ffd5b80630934d59714610157578063110304021461017f578063166aa127146101945780633b32a7bd146101c95780634657e26a146101f457806350435add1461021b575b5f5ffd5b61016a610165366004612d29565b61044b565b60405190151581526020015b60405180910390f35b61019261018d366004612d71565b61045f565b005b6101bb7f991b0a3376ce87f8ecc5d70962279ac09cdce934e8b5b9683e73c8ff087c7f8181565b604051908152602001610176565b6101dc6101d7366004612d9a565b610479565b6040516001600160a01b039091168152602001610176565b6101dc7f000000000000000000000000000000000000000000000000000000000000000081565b61028d610229366004612e12565b8151602080840151835180519083015185840151805190850151604080519687019790975295850193909352606084810192909252608084015260a083019190915260c082019290925260e001604051602081830303815290604052905092915050565b6040516101769190612ebd565b61028d610497565b6101bb6102b0366004612f0c565b6104c7565b6102c86102c3366004612f69565b61056f565b6040516101769190612fb7565b6101926102e3366004612fc5565b610595565b6102fb6102f6366004613054565b61078a565b604080516001600160a01b039093168352901515602083015201610176565b610192610328366004612d29565b610878565b61034061033b366004612d9a565b610be4565b60405161017692919061311a565b61019261035c366004613165565b610e7a565b61028d61036f366004612d9a565b610fab565b6101bb7fda86e76deaed01641f80ff5f72c372a038fa5182697aeb967e8b1f9819d58d8181565b61016a6103a9366004612d9a565b6111ab565b6101dc7f000000000000000000000000000000000000000000000000000000000000000081565b6101926103e3366004612fc5565b6111e8565b6101bb6103f63660046131a6565b6113ec565b61016a6104093660046131de565b5f9081526002602052604090205460ff1690565b61019261042b3660046131f5565b611485565b6101bb61043e366004612d9a565b6115bc565b6101bb611789565b5f6104568284611842565b90505b92915050565b815161046a8161190a565b6104748383611933565b505050565b5f6104848383610fab565b61048d9061321e565b60601c9392505050565b60606104c27f00000000000000000000000000000000000000000000000000000000000000006119ad565b905090565b5f5f7fda86e76deaed01641f80ff5f72c372a038fa5182697aeb967e8b1f9819d58d8186865f015187602001518787604051610504929190613276565b6040805191829003822060208301969096526001600160a01b039485169082015292909116606083015263ffffffff16608082015260a081019190915260c001604051602081830303815290604052805190602001209050610565816119ea565b9695505050505050565b5f60015f61057c84611a30565b815260208101919091526040015f205460ff1692915050565b8561059f8161190a565b5f60015f6105ac89611a30565b815260208101919091526040015f9081205460ff1691508160028111156105d5576105d5612f83565b036105f357604051635cd3106d60e11b815260040160405180910390fd5b6105fd8789611842565b505f5f5f61060a8a611a30565b815260208082019290925260409081015f9081206001600160a01b038d1682529092529020805490915088908a9060ff1661066357604051632e40e18760e01b815260040161065a9291906132a3565b60405180910390fd5b505060038101546001600160401b0316156106915760405163a54aa36960e01b815260040160405180910390fd5b5f60045f61069e8b611a30565b815260208101919091526040015f20546001600160401b0316905067fffffffffffffffe1981016106e2576040516310297f8760e11b815260040160405180910390fd5b5f6106ed82426132dd565b90506106fe8a8c8b8b8b8b8a611a8e565b506002830161070e898b8361338c565b5060038301805467ffffffffffffffff19166001600160401b0383161790556040516001600160a01b038c16907f600c8ea5356df2fad359d32cf64544f00ad31ccf4133a70b4da8630b1e3658d190610775908d90889060018901908f908f908990613468565b60405180910390a25050505050505050505050565b5f5f5f60015f61079987611a30565b815260208101919091526040015f9081205460ff16915060018260028111156107c4576107c4612f83565b036107d6575083516020850120610847565b60028260028111156107ea576107ea612f83565b0361082e575f5f86806020019051810190610805919061352c565b60408051808201825283815260209081019283525f938452915190915290209250610847915050565b60405163fdea7c0960e01b815260040160405180910390fd5b5f818152600360205260409020546001600160a01b03168061086988826111ab565b945094505050505b9250929050565b816108828161190a565b6040516309a961f360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631352c3e6906108d0908690869060040161354e565b602060405180830381865afa1580156108eb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090f919061356b565b158284909161093357604051631070287960e01b815260040161065a9291906132a3565b50505f60015f61094285611a30565b815260208101919091526040015f9081205460ff16915081600281111561096b5761096b612f83565b0361098957604051635cd3106d60e11b815260040160405180910390fd5b5f5f5f61099586611a30565b815260208082019290925260409081015f9081206001600160a01b03891682528352819020815160808101909252805460ff161515825260018101805492939192918401916109e3906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0f906132fc565b8015610a5a5780601f10610a3157610100808354040283529160200191610a5a565b820191905f5260205f20905b815481529060010190602001808311610a3d57829003601f168201915b50505050508152602001600282018054610a73906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f906132fc565b8015610aea5780601f10610ac157610100808354040283529160200191610aea565b820191905f5260205f20905b815481529060010190602001808311610acd57829003601f168201915b5050509183525050600391909101546001600160401b0316602090910152805190915084908690610b3057604051632e40e18760e01b815260040161065a9291906132a3565b50505f5f610b3d86611a30565b815260208082019290925260409081015f9081206001600160a01b03891682529092528120805460ff1916815590610b786001830182612b33565b610b85600283015f612b33565b50600301805467ffffffffffffffff191690556040516001600160a01b038616907f28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb644290610bd5908790869061358a565b60405180910390a25050505050565b604080518082019091525f8082526020820152610bff612b6a565b5f60015f610c0c87611a30565b815260208101919091526040015f205460ff1690506002816002811115610c3557610c35612f83565b14610c535760405163fdea7c0960e01b815260040160405180910390fd5b5f5f5f610c5f88611a30565b815260208082019290925260409081015f9081206001600160a01b03891682528352819020815160808101909252805460ff16151582526001810180549293919291840191610cad906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd9906132fc565b8015610d245780601f10610cfb57610100808354040283529160200191610d24565b820191905f5260205f20905b815481529060010190602001808311610d0757829003601f168201915b50505050508152602001600282018054610d3d906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610d69906132fc565b8015610db45780601f10610d8b57610100808354040283529160200191610db4565b820191905f5260205f20905b815481529060010190602001808311610d9757829003601f168201915b5050509183525050600391909101546001600160401b03166020909101528051909150610e1d5750506040805180820182525f80825260208083018290528351808501855282815280820192909252835180850190945282845283019190915292509050610871565b5f610e2782611b5f565b90505f5f5f5f84806020019051810190610e4191906135e9565b604080518082018252948552602080860194909452805180820190915291825291810191909152909c909b509950505050505050505050565b8251610e858161190a565b6001836002811115610e9957610e99612f83565b1480610eb657506002836002811115610eb457610eb4612f83565b145b610ed35760405163fdea7c0960e01b815260040160405180910390fd5b5f60015f610ee087611a30565b815260208101919091526040015f9081205460ff169150816002811115610f0957610f09612f83565b14610f26576040516281f09f60e01b815260040160405180910390fd5b8360015f610f3388611a30565b815260208101919091526040015f20805460ff19166001836002811115610f5c57610f5c612f83565b02179055507fb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e78585604051610f9292919061358a565b60405180910390a1610fa48584611933565b5050505050565b60605f60015f610fba86611a30565b815260208101919091526040015f205460ff1690506001816002811115610fe357610fe3612f83565b146110015760405163fdea7c0960e01b815260040160405180910390fd5b5f5f5f61100d87611a30565b815260208082019290925260409081015f9081206001600160a01b03881682528352819020815160808101909252805460ff1615158252600181018054929391929184019161105b906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611087906132fc565b80156110d25780601f106110a9576101008083540402835291602001916110d2565b820191905f5260205f20905b8154815290600101906020018083116110b557829003601f168201915b505050505081526020016002820180546110eb906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611117906132fc565b80156111625780601f1061113957610100808354040283529160200191611162565b820191905f5260205f20905b81548152906001019060200180831161114557829003601f168201915b5050509183525050600391909101546001600160401b031660209091015280519091506111a15760405180602001604052805f81525092505050610459565b5f61056582611b5f565b5f5f5f6111b785611a30565b815260208082019290925260409081015f9081206001600160a01b038616825290925290205460ff16905092915050565b856111f28161190a565b5f60015f6111ff89611a30565b815260208101919091526040015f9081205460ff16915081600281111561122857611228612f83565b0361124657604051635cd3106d60e11b815260040160405180910390fd5b5f5f61125189611a30565b815260208082019290925260409081015f9081206001600160a01b038c16825290925290205460ff1615611298576040516342ee68b560e01b815260040160405180910390fd5b6112a787898888888887611a8e565b50604051806080016040528060011515815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250938552505060408051602081810183528482528501529092018190529050806113158a611a30565b815260208082019290925260409081015f9081206001600160a01b038d1682528352208251815460ff1916901515178155908201516001820190611359908261362f565b506040820151600282019061136e908261362f565b50606091909101516003909101805467ffffffffffffffff19166001600160401b039092169190911790556040516001600160a01b038916907f1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd906113da908a9085908b908b906136e4565b60405180910390a25050505050505050565b81516020808401516040515f938493611459937f991b0a3376ce87f8ecc5d70962279ac09cdce934e8b5b9683e73c8ff087c7f81938a93928991019485526001600160a01b039384166020860152918316604085015263ffffffff16606084015216608082015260a00190565b60405160208183030381529060405280519060200120905061147a816119ea565b9150505b9392505050565b81516114908161190a565b60018260028111156114a4576114a4612f83565b14806114c1575060028260028111156114bf576114bf612f83565b145b6114de5760405163fdea7c0960e01b815260040160405180910390fd5b5f60015f6114eb86611a30565b815260208101919091526040015f9081205460ff16915081600281111561151457611514612f83565b14611531576040516281f09f60e01b815260040160405180910390fd5b8260015f61153e87611a30565b815260208101919091526040015f20805460ff1916600183600281111561156757611567612f83565b02179055507fb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7848460405161159d92919061358a565b60405180910390a16115b6846001600160401b03611933565b50505050565b5f5f5f5f6115c986611a30565b815260208082019290925260409081015f9081206001600160a01b03871682528352819020815160808101909252805460ff16151582526001810180549293919291840191611617906132fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611643906132fc565b801561168e5780601f106116655761010080835404028352916020019161168e565b820191905f5260205f20905b81548152906001019060200180831161167157829003601f168201915b505050505081526020016002820180546116a7906132fc565b80601f01602080910402602001604051908101604052809291908181526020018280546116d3906132fc565b801561171e5780601f106116f55761010080835404028352916020019161171e565b820191905f5260205f20905b81548152906001019060200180831161170157829003601f168201915b5050509183525050600391909101546001600160401b031660209091015290505f60018161174b87611a30565b815260208101919091526040015f2054825160ff909116915061177357505f91506104599050565b5f61177d83611b5f565b90506105658183611b9e565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea6117f6611c1f565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f5f5f5f61184f86611a30565b815260208082019290925260409081015f9081206001600160a01b03871682529092529020805490915060ff16611889575f915050610459565b60038101546001600160401b0316158015906118b2575060038101546001600160401b03164210155b1561190157600181016118c86002830182613711565b5060408051602081019091525f815260028201906118e6908261362f565b50600301805467ffffffffffffffff19169055506001610459565b505f9392505050565b61191381611c94565b6119305760405163932d94f760e01b815260040160405180910390fd5b50565b8060045f61194085611a30565b81526020019081526020015f205f6101000a8154816001600160401b0302191690836001600160401b031602179055507f22b2b63b5820f9d933565468845820b939bf5ad654ea6ab5bdd3728f19e4580f82826040516119a19291906137d1565b60405180910390a15050565b60605f6119b983611d3d565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f6119f3611789565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f815f0151826020015163ffffffff16604051602001611a7692919060609290921b6001600160601b031916825260a01b6001600160a01b031916601482015260200190565b604051602081830303815290604052610459906137f5565b5f806001836002811115611aa457611aa4612f83565b03611abe57611ab7898989898989611d64565b9050611ae5565b6002836002811115611ad257611ad2612f83565b0361082e57611ab7898989898989611e56565b5f8181526002602052604090205460ff1615611b1457604051630c7bc20160e11b815260040160405180910390fd5b5f818152600260209081526040808320805460ff191660011790556003909152902080546001600160a01b038a166001600160a01b031990911617905590505b979650505050505050565b6060818101516001600160401b031615801590611b89575081606001516001600160401b03164210155b15611b9657506040015190565b506020015190565b5f6001826002811115611bb357611bb3612f83565b03611bc5575081516020830120610459565b6002826002811115611bd957611bd9612f83565b0361082e575f5f84806020019051810190611bf491906135e9565b505060408051808201825283815260209081019283525f938452915190915290209250610459915050565b60605f611c4b7f00000000000000000000000000000000000000000000000000000000000000006119ad565b9050805f81518110611c5f57611c5f613262565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb890608401602060405180830381865afa158015611d19573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610459919061356b565b5f60ff8216601f81111561045957604051632cd44ac360e21b815260040160405180910390fd5b5f60148414611d865760405163d109118160e01b815260040160405180910390fd5b5f611d918587613818565b60601c905080611db457604051634935505f60e01b815260040160405180910390fd5b5f611df687878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250611b9e915050565b90505f611e04898b856113ec565b9050611e49838288888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505f199250611fc0915050565b5098975050505050505050565b5f60c08414611e785760405163d109118160e01b815260040160405180910390fd5b60408214611e9957604051638baa579f60e01b815260040160405180910390fd5b5f611ea6878988886104c7565b90505f80808080611eb98a8c018c613856565b9350935093509350835f148015611ece575082155b15611eec57604051634935505f60e01b815260040160405180910390fd5b5f80611efa8a8c018c613890565b6040805180820182528381526020808201849052825180840184528b81528082018b90528351808501909452898452908301889052939550919350909190611f468b8484845f80612012565b9a508a9950611f729850505050505050505057604051638baa579f60e01b815260040160405180910390fd5b611fb387878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060029250611b9e915050565b9998505050505050505050565b42811015611fe157604051630819bdcd60e01b815260040160405180910390fd5b611ff56001600160a01b03851684846120da565b6115b657604051638baa579f60e01b815260040160405180910390fd5b5f5f5f61201e8961212e565b90505f61202d8a89898c6121b8565b90505f61204461203d8a8461226c565b8b906122dc565b90505f61208661207f846120796040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061226c565b85906122dc565b905087156120ab576120a28261209a612350565b838c8b612410565b965094506120cb565b6120be826120b7612350565b838c612624565b955085156120cb57600194505b50505050965096945050505050565b5f5f5f6120e7858561285b565b90925090505f8160048111156120ff576120ff612f83565b14801561211d5750856001600160a01b0316826001600160a01b0316145b80610565575061056586868661289a565b604080518082019091525f80825260208201525f808061215b5f5160206139475f395f51905f52866138b0565b90505b61216781612981565b90935091505f5160206139475f395f51905f52828309830361219f576040805180820190915290815260208101919091529392505050565b5f5160206139475f395f51905f5260018208905061215e565b8251602080850151845180519083015186840151805190850151875188870151604080519889018e90528801989098526060870195909552608086019390935260a085019190915260c084015260e08301526101008201526101208101919091525f907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019061014001604051602081830303815290604052805190602001205f1c61226391906138b0565b95945050505050565b604080518082019091525f8082526020820152612287612b8f565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806122b557fe5b50806122d457604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201526122f7612bad565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061233157fe5b50806122d45760405163d4b68fd760e01b815260040160405180910390fd5b612358612b6a565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528681526020808201869052825180840190935286835282018490525f91829190612441612bcb565b5f5b60028110156125f8575f6124588260066138cf565b905084826002811061246c5761246c613262565b6020020151518361247d835f6138e6565b600c811061248d5761248d613262565b60200201528482600281106124a4576124a4613262565b602002015160200151838260016124bb91906138e6565b600c81106124cb576124cb613262565b60200201528382600281106124e2576124e2613262565b60200201515151836124f58360026138e6565b600c811061250557612505613262565b602002015283826002811061251c5761251c613262565b60200201515160016020020151836125358360036138e6565b600c811061254557612545613262565b602002015283826002811061255c5761255c613262565b6020020151602001515f6002811061257657612576613262565b6020020151836125878360046138e6565b600c811061259757612597613262565b60200201528382600281106125ae576125ae613262565b6020020151602001516001600281106125c9576125c9613262565b6020020151836125da8360056138e6565b600c81106125ea576125ea613262565b602002015250600101612443565b50612601612bea565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b6040805180820182528581526020808201859052825180840190935285835282018390525f91612652612bcb565b5f5b6002811015612809575f6126698260066138cf565b905084826002811061267d5761267d613262565b6020020151518361268e835f6138e6565b600c811061269e5761269e613262565b60200201528482600281106126b5576126b5613262565b602002015160200151838260016126cc91906138e6565b600c81106126dc576126dc613262565b60200201528382600281106126f3576126f3613262565b60200201515151836127068360026138e6565b600c811061271657612716613262565b602002015283826002811061272d5761272d613262565b60200201515160016020020151836127468360036138e6565b600c811061275657612756613262565b602002015283826002811061276d5761276d613262565b6020020151602001515f6002811061278757612787613262565b6020020151836127988360046138e6565b600c81106127a8576127a8613262565b60200201528382600281106127bf576127bf613262565b6020020151602001516001600281106127da576127da613262565b6020020151836127eb8360056138e6565b600c81106127fb576127fb613262565b602002015250600101612654565b50612812612bea565b5f6020826101808560086107d05a03fa9050808061282c57fe5b508061284b576040516324ccc79360e21b815260040160405180910390fd5b5051151598975050505050505050565b5f5f825160410361288f576020830151604084015160608501515f1a612883878285856129fd565b94509450505050610871565b505f90506002610871565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016128c29291906138f9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516129009190613919565b5f60405180830381855afa9150503d805f8114612938576040519150601f19603f3d011682016040523d82523d5f602084013e61293d565b606091505b509150915081801561295157506020815110155b801561056557508051630b135d3f60e11b90612976908301602090810190840161392f565b149695505050505050565b5f80805f5160206139475f395f51905f5260035f5160206139475f395f51905f52865f5160206139475f395f51905f52888909090890505f6129f1827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206139475f395f51905f52612aba565b91959194509092505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612a3257505f90506003612ab1565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612a83573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612aab575f60019250925050612ab1565b91505f90505b94509492505050565b5f5f612ac4612bea565b612acc612c08565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280612b0957fe5b5082612b285760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b508054612b3f906132fc565b5f825580601f10612b4e575050565b601f0160209004905f5260205f20908101906119309190612c26565b6040518060400160405280612b7d612c3e565b8152602001612b8a612c3e565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b80821115612c3a575f8155600101612c27565b5090565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b0381168114612c72575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612cad57612cad612c77565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612cdb57612cdb612c77565b604052919050565b5f60408284031215612cf3575f5ffd5b612cfb612c8b565b9050612d0682612c5c565b8152602082013563ffffffff81168114612d1e575f5ffd5b602082015292915050565b5f5f60608385031215612d3a575f5ffd5b612d4383612c5c565b9150612d528460208501612ce3565b90509250929050565b80356001600160401b0381168114612c72575f5ffd5b5f5f60608385031215612d82575f5ffd5b612d8c8484612ce3565b9150612d5260408401612d5b565b5f5f60608385031215612dab575f5ffd5b612db58484612ce3565b9150612d5260408401612c5c565b5f82601f830112612dd2575f5ffd5b612ddc6040612cb3565b806040840185811115612ded575f5ffd5b845b81811015612e07578035845260209384019301612def565b509095945050505050565b5f5f82840360c0811215612e24575f5ffd5b6040811215612e31575f5ffd5b612e39612c8b565b843581526020808601359082015292506080603f1982011215612e5a575f5ffd5b50612e63612c8b565b612e708560408601612dc3565b8152612e7f8560808601612dc3565b6020820152809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6104566020830184612e8f565b5f5f83601f840112612edf575f5ffd5b5081356001600160401b03811115612ef5575f5ffd5b602083019150836020828501011115610871575f5ffd5b5f5f5f5f60808587031215612f1f575f5ffd5b612f2885612c5c565b9350612f378660208701612ce3565b925060608501356001600160401b03811115612f51575f5ffd5b612f5d87828801612ecf565b95989497509550505050565b5f60408284031215612f79575f5ffd5b6104568383612ce3565b634e487b7160e01b5f52602160045260245ffd5b60038110612fb357634e487b7160e01b5f52602160045260245ffd5b9052565b602081016104598284612f97565b5f5f5f5f5f5f60a08789031215612fda575f5ffd5b612fe387612c5c565b9550612ff28860208901612ce3565b945060608701356001600160401b0381111561300c575f5ffd5b61301889828a01612ecf565b90955093505060808701356001600160401b03811115613036575f5ffd5b61304289828a01612ecf565b979a9699509497509295939492505050565b5f5f60608385031215613065575f5ffd5b61306f8484612ce3565b915060408301356001600160401b03811115613089575f5ffd5b8301601f81018513613099575f5ffd5b80356001600160401b038111156130b2576130b2612c77565b6130c5601f8201601f1916602001612cb3565b8181528660208385010111156130d9575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b805f5b60028110156115b65781518452602093840193909101906001016130fb565b5f60c082019050835182526020840151602083015261313d6040830184516130f8565b602083015161314f60808401826130f8565b509392505050565b803560038110612c72575f5ffd5b5f5f5f60808486031215613177575f5ffd5b6131818585612ce3565b925061318f60408501613157565b915061319d60608501612d5b565b90509250925092565b5f5f5f608084860312156131b8575f5ffd5b6131c184612c5c565b92506131d08560208601612ce3565b915061319d60608501612c5c565b5f602082840312156131ee575f5ffd5b5035919050565b5f5f60608385031215613206575f5ffd5b6132108484612ce3565b9150612d5260408401613157565b805160208201516001600160601b031981169190601482101561325b576001600160601b03196001600160601b03198360140360031b1b82161692505b5050919050565b634e487b7160e01b5f52603260045260245ffd5b818382375f9101908152919050565b80516001600160a01b0316825260209081015163ffffffff16910152565b606081016132b18285613285565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610459576104596132c9565b600181811c9082168061331057607f821691505b60208210810361332e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561047457805f5260205f20601f840160051c810160208510156133595750805b601f840160051c820191505b81811015610fa4575f8155600101613365565b5f19600383901b1c191660019190911b1790565b6001600160401b038311156133a3576133a3612c77565b6133b7836133b183546132fc565b83613334565b5f601f8411600181146133e3575f85156133d15750838201355b6133db8682613378565b845550610fa4565b5f83815260208120601f198716915b8281101561341257868501358255602094850194600190920191016133f2565b508682101561342e575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6134728188613285565b61347f6040820187612f97565b60c060608201525f5f8654613493816132fc565b8060c0860152600182165f81146134b157600181146134cd576134fe565b60ff19831660e087015260e082151560051b87010193506134fe565b895f5260205f205f5b838110156134f557815488820160e001526001909101906020016134d6565b870160e0019450505b5050508281036080840152613514818688613440565b915050611b5460a08301846001600160401b03169052565b5f5f6040838503121561353d575f5ffd5b505080516020909101519092909150565b6001600160a01b03831681526060810161147e6020830184613285565b5f6020828403121561357b575f5ffd5b8151801515811461147e575f5ffd5b606081016135988285613285565b61147e6040830184612f97565b5f82601f8301126135b4575f5ffd5b6135be6040612cb3565b8060408401858111156135cf575f5ffd5b845b81811015612e075780518452602093840193016135d1565b5f5f5f5f60c085870312156135fc575f5ffd5b84516020860151909450925061361586604087016135a5565b915061362486608087016135a5565b905092959194509250565b81516001600160401b0381111561364857613648612c77565b61365c8161365684546132fc565b84613334565b6020601f821160018114613689575f83156136775750848201515b6136818482613378565b855550610fa4565b5f84815260208120601f198516915b828110156136b85787850151825560209485019460019092019101613698565b50848210156136d557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6136ee8186613285565b6136fb6040820185612f97565b608060608201525f610565608083018486613440565b81810361371c575050565b61372682546132fc565b6001600160401b0381111561373d5761373d612c77565b61374b8161365684546132fc565b5f601f82116001811461376e575f83156136775750848201546136818482613378565b5f8581526020808220868352908220601f198616925b838110156137a45782860154825560019586019590910190602001613784565b50858310156137c157818501545f19600388901b60f8161c191681555b5050505050600190811b01905550565b606081016137df8285613285565b6001600160401b03831660408301529392505050565b8051602080830151919081101561332e575f1960209190910360031b1b16919050565b80356001600160601b0319811690601484101561384f576001600160601b03196001600160601b03198560140360031b1b82161691505b5092915050565b5f5f5f5f60c08587031215613869575f5ffd5b84359350602085013592506138818660408701612dc3565b91506136248660808701612dc3565b5f5f604083850312156138a1575f5ffd5b50508035926020909101359150565b5f826138ca57634e487b7160e01b5f52601260045260245ffd5b500690565b8082028115828204841417610459576104596132c9565b80820180821115610459576104596132c9565b828152604060208201525f6139116040830184612e8f565b949350505050565b5f82518060208501845e5f920191825250919050565b5f6020828403121561393f575f5ffd5b505191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220d5a3b5db4ec21adaddc3a38b8798b6f47011d8119df2771ee5d2ba8e860c6fea64736f6c634300081e0033", } // KeyRegistrarABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/RewardsCoordinator/binding.go b/pkg/bindings/RewardsCoordinator/binding.go index 0bafa47750..3755f4ab42 100644 --- a/pkg/bindings/RewardsCoordinator/binding.go +++ b/pkg/bindings/RewardsCoordinator/binding.go @@ -114,7 +114,7 @@ type OperatorSet struct { // RewardsCoordinatorMetaData contains all meta data concerning the RewardsCoordinator contract. var RewardsCoordinatorMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsCoordinatorConstructorParams\",\"components\":[{\"name\":\"delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"CALCULATION_INTERVAL_SECONDS\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"MAX_REWARDS_DURATION\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"MAX_RETROACTIVE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"MAX_FUTURE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"GENESIS_REWARDS_TIMESTAMP\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CALCULATION_INTERVAL_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GENESIS_REWARDS_TIMESTAMP\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_FUTURE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_RETROACTIVE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_REWARDS_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activationDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateEarnerLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"calculateTokenLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"checkClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorDirectedOperatorSetRewardsSubmission\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"totalClaimed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentClaimableDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootAtIndex\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootsLength\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_defaultSplitBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorDirectedAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorDirectedOperatorSetRewardsSubmissionHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllEarnersHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"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\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"processClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim[]\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setActivationDelay\",\"inputs\":[{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorSetSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submissionNonce\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"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\":\"event\",\"name\":\"AVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ActivationDelaySet\",\"inputs\":[{\"name\":\"oldActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"newActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClaimerForSet\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldClaimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedOperatorSetRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorSetSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorSetSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"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\":\"RewardsClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsForAllSubmitterSet\",\"inputs\":[{\"name\":\"rewardsForAllSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllEarnersCreated\",\"inputs\":[{\"name\":\"tokenHopper\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsUpdaterSet\",\"inputs\":[{\"name\":\"oldRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"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\":\"error\",\"name\":\"AmountExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AmountIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EarningsNotGreaterThanClaimed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EmptyRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCalculationIntervalSecondsRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidClaimProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDurationRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarnerLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGenesisRewardsTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRootIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStartTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTokenLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewRootMustBeForNewCalculatedPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreviousSplitPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RewardsEndTimestampNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootAlreadyActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootNotActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SplitExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SubmissionNotRetroactive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]}]", - Bin: "0x6101c0604052348015610010575f5ffd5b506040516148fa3803806148fa83398101604081905261002f91610263565b608081015181516020830151604084015160a085015160c086015160e087015161010088015161012089015160608a01516001600160a01b038116610087576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261009d858261032d565b63ffffffff16156100c157604051630e06bd3160e01b815260040160405180910390fd5b6100ce620151808661032d565b63ffffffff16156100f25760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261013e610144565b50610360565b5f54610100900460ff16156101af5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146101fe575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60405161014081016001600160401b038111828210171561022f57634e487b7160e01b5f52604160045260245ffd5b60405290565b80516001600160a01b038116811461024b575f5ffd5b919050565b805163ffffffff8116811461024b575f5ffd5b5f610140828403128015610275575f5ffd5b5061027e610200565b61028783610235565b815261029560208401610235565b60208201526102a660408401610235565b60408201526102b760608401610235565b60608201526102c860808401610235565b60808201526102d960a08401610250565b60a08201526102ea60c08401610250565b60c08201526102fb60e08401610250565b60e082015261030d6101008401610250565b6101008201526103206101208401610250565b6101208201529392505050565b5f63ffffffff83168061034e57634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516144c96104315f395f81816105e5015261311801525f818161049901526132fb01525f81816103e8015261281601525f818161054701526132b901525f818161085e01526131a301525f818161079f015281816131f3015261326701525f81816108b201528181610a9f01528181611b1e0152611d8e01525f818161056e015261339601525f81816109250152611a8e01525f8181610731015281816126bb015261302b01526144c95ff3fe608060405234801561000f575f5ffd5b50600436106103a8575f3560e01c80638da5cb5b116101ea578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a13578063fbf1e2c114610a26578063fce36c7d14610a39578063ff9f6cce14610a4c575f5ffd5b8063f6efbb59146109c7578063f74e8eac146109da578063f8cd8448146109ed578063f96abf2e14610a00575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610947578063f22cef8514610974578063f2f07ab414610987578063f2fde38b146109b4575f5ffd5b8063de02e503146108e7578063e063f81f146108fa578063e810ce211461090d578063ea4d3c9b14610920575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610859578063c46db60614610880578063ca8aa7c7146108ad578063dcbb03b3146108d4575f5ffd5b8063a50a1d9c146107e7578063aebd8bae146107fa578063b3dbb0e014610827578063bb7e451f1461083a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107875780639d45c2811461079a5780639de4b35f146107c1578063a0169ddd146107d4575f5ffd5b80638da5cb5b146107535780639104c319146107645780639be3d4e41461077f575f5ffd5b80634596021c116102d65780635e9d83481161026b5780637b8f8b051161023b5780637b8f8b05146106e7578063863cb9a9146106ef578063865c695314610702578063886f11951461072c575f5ffd5b80635e9d83481461068a57806363f6a7981461069d5780636d21117e146106b2578063715018a6146106df575f5ffd5b806358baaa3e116102a657806358baaa3e14610644578063595c6a67146106575780635ac86ab71461065f5780635c975abb14610682575f5ffd5b80634596021c146105cd5780634657e26a146105e05780634b943960146106075780634d18cc351461062d575f5ffd5b8063149bc8721161034c57806339b70e381161031c57806339b70e38146105695780633a8c0786146105905780633ccc861d146105a75780633efe1db6146105ba575f5ffd5b8063149bc872146104ce5780632b9f64a4146104ef57806336af41fa1461052f57806337838ed014610542575f5ffd5b80630e9a53cf116103875780630e9a53cf146104345780630eb3834514610481578063131433b414610494578063136439dd146104bb575f5ffd5b806218572c146103ac57806304a0c502146103e35780630ca298991461041f575b5f5ffd5b6103ce6103ba3660046138f6565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61040a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103da565b61043261042d36600461396e565b610a5f565b005b61043c610ce8565b6040516103da91905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043261048f3660046139ca565b610de8565b61040a7f000000000000000000000000000000000000000000000000000000000000000081565b6104326104c9366004613a01565b610e68565b6104e16104dc366004613a18565b610ea2565b6040519081526020016103da565b6105176104fd3660046138f6565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103da565b61043261053d366004613a32565b610f17565b61040a7f000000000000000000000000000000000000000000000000000000000000000081565b6105177f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461040a90600160a01b900463ffffffff1681565b6104326105b5366004613a81565b611088565b6104326105c8366004613ad7565b6110af565b6104326105db366004613b01565b611285565b6105177f000000000000000000000000000000000000000000000000000000000000000081565b61061a6106153660046138f6565b6112e8565b60405161ffff90911681526020016103da565b60cb5461040a90600160c01b900463ffffffff1681565b610432610652366004613b53565b611343565b610432611357565b6103ce61066d366004613b6c565b606654600160ff9092169190911b9081161490565b6066546104e1565b6103ce610698366004613b8c565b61136b565b60cb5461061a90600160e01b900461ffff1681565b6103ce6106c0366004613bbd565b60cf60209081525f928352604080842090915290825290205460ff1681565b6104326113f6565b60ca546104e1565b6104326106fd3660046138f6565b611407565b6104e1610710366004613be7565b60cd60209081525f928352604080842090915290825290205481565b6105177f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610517565b61051773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61043c611418565b610432610795366004613c13565b6114b4565b61040a7f000000000000000000000000000000000000000000000000000000000000000081565b61061a6107cf366004613c4a565b611612565b6104326107e23660046138f6565b611695565b6104326107f5366004613c86565b6116a0565b6103ce610808366004613bbd565b60d260209081525f928352604080842090915290825290205460ff1681565b610432610835366004613c9f565b6116b1565b6104e16108483660046138f6565b60ce6020525f908152604090205481565b61040a7f000000000000000000000000000000000000000000000000000000000000000081565b6103ce61088e366004613bbd565b60d060209081525f928352604080842090915290825290205460ff1681565b6105177f000000000000000000000000000000000000000000000000000000000000000081565b6104326108e2366004613cc9565b6117bf565b61043c6108f5366004613a01565b6118ef565b61061a610908366004613be7565b61197f565b61040a61091b366004613a01565b6119e4565b6105177f000000000000000000000000000000000000000000000000000000000000000081565b6103ce610955366004613bbd565b60d360209081525f928352604080842090915290825290205460ff1681565b610432610982366004613be7565b611a65565b6103ce610995366004613bbd565b60d760209081525f928352604080842090915290825290205460ff1681565b6104326109c23660046138f6565b611bb2565b6104326109d5366004613d0d565b611c2d565b6104326109e8366004613d6b565b611d62565b6104e16109fb366004613a18565b611f0c565b610432610a0e366004613b53565b611f1c565b610432610a21366004613a01565b61204d565b60cb54610517906001600160a01b031681565b610432610a47366004613a32565b6120ba565b610432610a5a366004613a32565b6121eb565b6009610a6a8161234c565b610a7760208501856138f6565b610a8081612377565b610a8861239d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610ad4908890600401613dd6565b602060405180830381865afa158015610aef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b139190613de4565b610b3057604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610cd65736858583818110610b4d57610b4d613dff565b9050602002810190610b5f9190613e13565b90505f60ce81610b7260208b018b6138f6565b6001600160a01b031681526020808201929092526040015f90812054925090610b9d908a018a6138f6565b8284604051602001610bb19392919061403b565b6040516020818303038152906040528051906020012090505f610bd3846123f6565b9050600160d75f610be760208e018e6138f6565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c2683600161407e565b60ce5f610c3660208e018e6138f6565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610c9793929190614091565b60405180910390a3610cc6333083610cb56040890160208a016138f6565b6001600160a01b03169291906125e1565b505060019092019150610b329050565b50610ce16001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610dc0575f60ca610d236001846140b6565b81548110610d3357610d33613dff565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610da25750806040015163ffffffff164210155b15610dad5792915050565b5080610db8816140c9565b915050610d0f565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610df061264c565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b610e706126a6565b6066548181168114610e955760405163c61dca5d60e01b815260040160405180910390fd5b610e9e82612749565b5050565b5f80610eb160208401846138f6565b8360200135604051602001610efa9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6001610f228161234c565b335f90815260d1602052604090205460ff16610f5157604051635c427cd960e01b815260040160405180910390fd5b610f5961239d565b5f5b828110156110785736848483818110610f7657610f76613dff565b9050602002810190610f8891906140de565b335f81815260ce60209081526040808320549051949550939192610fb29290918591879101614170565b604051602081830303815290604052805190602001209050610fd383612786565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561100590839061407e565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061104c908890614196565b60405180910390a461106d333060408601803590610cb590602089016138f6565b505050600101610f5b565b506110836001609755565b505050565b60026110938161234c565b61109b61239d565b6110a58383612871565b6110836001609755565b60036110ba8161234c565b60cb546001600160a01b031633146110e557604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161111857604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061113e576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f9061115d90600160a01b900463ffffffff16426141a8565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b60026112908161234c565b61129861239d565b5f5b838110156112d7576112cf8585838181106112b7576112b7613dff565b90506020028101906112c991906141c4565b84612871565b60010161129a565b506112e26001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff169082015261133d90612af9565b92915050565b61134b61264c565b61135481612b69565b50565b61135f6126a6565b6113695f19612749565b565b5f6113ee8260ca61137f6020830183613b53565b63ffffffff168154811061139557611395613dff565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152612bda565b506001919050565b6113fe61264c565b6113695f612d7d565b61140f61264c565b61135481612dce565b604080516080810182525f80825260208201819052918101829052606081019190915260ca805461144b906001906140b6565b8154811061145b5761145b613dff565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b60056114bf8161234c565b836114c981612377565b6114d161239d565b5f5b83811015610cd657368585838181106114ee576114ee613dff565b90506020028101906115009190613e13565b6001600160a01b0388165f90815260ce6020908152604080832054905193945092611531918b91859187910161403b565b6040516020818303038152906040528051906020012090505f611553846123f6565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff1916600190811790915590915061159190849061407e565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906115e49088908a906141d8565b60405180910390a4611602333083610cb56040890160208a016138f6565b5050600190920191506114d39050565b6001600160a01b0382165f90815260d66020526040812061168e9082611645611640368790038701876141f0565b612e29565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612af9565b9392505050565b33610e9e8183612e8c565b6116a861264c565b61135481612eef565b60076116bc8161234c565b826116c681612377565b60cb545f906116e290600160a01b900463ffffffff16426141a8565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201529192509061173b90612af9565b6001600160a01b0387165f90815260d560205260409020909150611760908684612f5a565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b60066117ca8161234c565b836117d481612377565b60cb545f906117f090600160a01b900463ffffffff16426141a8565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff169281019290925291925061185790612af9565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611889908684612f5a565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca828154811061192557611925613dff565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061168e90612af9565b60ca545f905b63ffffffff811615611a4b578260ca611a04600184614258565b63ffffffff1681548110611a1a57611a1a613dff565b905f5260205f2090600202015f015403611a395761168e600182614258565b80611a4381614274565b9150506119ea565b5060405163504570e360e01b815260040160405180910390fd5b81611a6f81612377565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611ad3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611af79190613de4565b80611b8b575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611b65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b899190614292565b115b611ba85760405163fb494ea160e01b815260040160405180910390fd5b6110838383612e8c565b611bba61264c565b6001600160a01b038116611c245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61135481612d7d565b5f54610100900460ff1615808015611c4b57505f54600160ff909116105b80611c645750303b158015611c6457505f5460ff166001145b611cc75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611c1b565b5f805460ff191660011790558015611ce8575f805461ff0019166101001790555b611cf185612749565b611cfa86612d7d565b611d0384612dce565b611d0c83612b69565b611d1582612eef565b8015611d5a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6008611d6d8161234c565b83611d7781612377565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890611dc3908790600401613dd6565b602060405180830381865afa158015611dde573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e029190613de4565b611e1f57604051631fb1705560e21b815260040160405180910390fd5b60cb545f90611e3b90600160a01b900463ffffffff16426141a8565b6001600160a01b0387165f90815260d66020526040812091925090611e6d9082611645611640368b90038b018b6141f0565b6001600160a01b0388165f90815260d660205260408120919250611eb29190611e9e611640368b90038b018b6141f0565b81526020019081526020015f208684612f5a565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a604051611efb94939291906142a9565b60405180910390a350505050505050565b5f6001610eb160208401846138f6565b6003611f278161234c565b60cb546001600160a01b03163314611f5257604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff831610611f7a576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff1681548110611f9457611f94613dff565b905f5260205f20906002020190508060010160089054906101000a900460ff1615611fd257604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061200357604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b612055613029565b6066548019821981161461207c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6120c48161234c565b6120cc61239d565b5f5b8281101561107857368484838181106120e9576120e9613dff565b90506020028101906120fb91906140de565b335f81815260ce602090815260408083205490519495509391926121259290918591879101614170565b60405160208183030381529060405280519060200120905061214683612786565b335f90815260cf602090815260408083208484529091529020805460ff1916600190811790915561217890839061407e565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906121bf908890614196565b60405180910390a46121e0333060408601803590610cb590602089016138f6565b5050506001016120ce565b60046121f68161234c565b335f90815260d1602052604090205460ff1661222557604051635c427cd960e01b815260040160405180910390fd5b61222d61239d565b5f5b82811015611078573684848381811061224a5761224a613dff565b905060200281019061225c91906140de565b335f81815260ce602090815260408083205490519495509391926122869290918591879101614170565b6040516020818303038152906040528051906020012090506122a783612786565b335f90815260d2602090815260408083208484529091529020805460ff191660019081179091556122d990839061407e565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b90612320908890614196565b60405180910390a4612341333060408601803590610cb590602089016138f6565b50505060010161222f565b606654600160ff83161b908116036113545760405163840a48d560e01b815260040160405180910390fd5b612380816130da565b6113545760405163932d94f760e01b815260040160405180910390fd5b6002609754036123ef5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611c1b565b6002609755565b5f61242961240483806142dd565b6124146080860160608701613b53565b61242460a0870160808801613b53565b613183565b5f61243760408401846142dd565b9050116124575760405163796cc52560e01b815260040160405180910390fd5b4261246860a0840160808501613b53565b6124786080850160608601613b53565b61248291906141a8565b63ffffffff16106124a65760405163150358a160e21b815260040160405180910390fd5b5f80805b6124b760408601866142dd565b90508110156125a857366124ce60408701876142dd565b838181106124de576124de613dff565b6040029190910191505f90506124f760208301836138f6565b6001600160a01b03160361251e57604051630863a45360e11b815260040160405180910390fd5b61252b60208201826138f6565b6001600160a01b0316836001600160a01b03161061255c576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612580576040516310eb483f60e21b815260040160405180910390fd5b61258d60208201826138f6565b925061259d60208201358561407e565b9350506001016124aa565b506f4b3b4ca85a86c47a098a223fffffffff8211156125da5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526112e29085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613481565b6033546001600160a01b031633146113695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611c1b565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015612708573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061272c9190613de4565b61136957604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6127b361279382806142dd565b6127a36080850160608601613b53565b61242460a0860160808701613b53565b5f8160400135116127d7576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff8160400135111561280c5760405163070b5a6f60e21b815260040160405180910390fd5b61283c63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164261407e565b61284c6080830160608401613b53565b63ffffffff16111561135457604051637ee2b44360e01b815260040160405180910390fd5b5f60ca6128816020850185613b53565b63ffffffff168154811061289757612897613dff565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015290506128f78382612bda565b5f61290860808501606086016138f6565b6001600160a01b038082165f90815260cc6020526040902054919250168061292d5750805b336001600160a01b0382161461295657604051635c427cd960e01b815260040160405180910390fd5b5f5b61296560a0870187614322565b9050811015611d5a573661297c60e08801886142dd565b8381811061298c5761298c613dff565b6001600160a01b0387165f90815260cd6020908152604080832093029490940194509290915082906129c0908501856138f6565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612a065760405163aa385e8160e01b815260040160405180910390fd5b5f612a158260208501356140b6565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612a4290876138f6565b6001600160a01b031681526020808201929092526040015f2091909155612a839089908390612a73908701876138f6565b6001600160a01b03169190613554565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ac760208901896138f6565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612958565b5f816040015163ffffffff165f1480612b2b5750815161ffff908116148015612b2b5750816040015163ffffffff1642105b15612b4357505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612b5c57815161133d565b506020015190565b919050565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b806060015115612bfd57604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff16421015612c2857604051631437a2bb60e31b815260040160405180910390fd5b612c3560c0830183614322565b9050612c4460a0840184614322565b905014612c64576040516343714afd60e01b815260040160405180910390fd5b612c7160e08301836142dd565b9050612c8060c0840184614322565b905014612ca0576040516343714afd60e01b815260040160405180910390fd5b8051612ccc90612cb66040850160208601613b53565b612cc36040860186614367565b86606001613584565b5f5b612cdb60a0840184614322565b905081101561108357612d756080840135612cf960a0860186614322565b84818110612d0957612d09613dff565b9050602002016020810190612d1e9190613b53565b612d2b60c0870187614322565b85818110612d3b57612d3b613dff565b9050602002810190612d4d9190614367565b612d5a60e08901896142dd565b87818110612d6a57612d6a613dff565b905060400201613628565b600101612cce565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff16604051602001612e7492919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261133d906143a9565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff83161115612f815760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff164211612faf57604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f03612fd657825461ffff191661ffff178355612fed565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613085573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130a991906143cc565b6001600160a01b0316336001600160a01b0316146113695760405163794821ff60e01b815260040160405180910390fd5b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb890608401602060405180830381865afa15801561315f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133d9190613de4565b826131a15760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1611156131ee57604051630dd0b9f560e21b815260040160405180910390fd5b6132187f0000000000000000000000000000000000000000000000000000000000000000826143fb565b63ffffffff161561323c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116132625760405163cb3f434d60e01b815260040160405180910390fd5b61328c7f0000000000000000000000000000000000000000000000000000000000000000836143fb565b63ffffffff16156132b057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426132e991906140b6565b1115801561332357508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6133405760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015611d5a575f86868381811061335e5761335e613dff565b61337492602060409092020190810191506138f6565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156133dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134019190613de4565b8061342857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61344557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106134775760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613343565b5f6134d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136669092919063ffffffff16565b905080515f14806134f55750808060200190518101906134f59190613de4565b6110835760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611c1b565b6040516001600160a01b03831660248201526044810182905261108390849063a9059cbb60e01b90606401612615565b61358f602083614422565b6001901b8463ffffffff16106135b75760405162c6c39d60e71b815260040160405180910390fd5b5f6135c182610ea2565b905061360b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff891661367c565b611d5a576040516369ca16c960e01b815260040160405180910390fd5b613633602083614422565b6001901b8463ffffffff161061365c5760405163054ff4df60e51b815260040160405180910390fd5b5f6135c182611f0c565b606061367484845f856136b1565b949350505050565b5f8361369b576040516329e7276760e11b815260040160405180910390fd5b836136a7868585613788565b1495945050505050565b6060824710156137125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611c1b565b5f5f866001600160a01b0316858760405161372d9190614435565b5f6040518083038185875af1925050503d805f8114613767576040519150601f19603f3d011682016040523d82523d5f602084013e61376c565b606091505b509150915061377d87838387613845565b979650505050505050565b5f83515f0361379857508161168e565b602084516137a6919061444b565b156137c4576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613825576137db60028561444b565b5f036137fc57815f528086015160205260405f209150600284049350613813565b808601515f528160205260405f2091506002840493505b61381e60208261407e565b90506137c8565b508215613674576040516363df817160e01b815260040160405180910390fd5b606083156138b35782515f036138ac576001600160a01b0385163b6138ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611c1b565b5081613674565b61367483838151156138c85781518083602001fd5b8060405162461bcd60e51b8152600401611c1b919061445e565b6001600160a01b0381168114611354575f5ffd5b5f60208284031215613906575f5ffd5b813561168e816138e2565b5f60408284031215613921575f5ffd5b50919050565b5f5f83601f840112613937575f5ffd5b5081356001600160401b0381111561394d575f5ffd5b6020830191508360208260051b8501011115613967575f5ffd5b9250929050565b5f5f5f60608486031215613980575f5ffd5b61398a8585613911565b925060408401356001600160401b038111156139a4575f5ffd5b6139b086828701613927565b9497909650939450505050565b8015158114611354575f5ffd5b5f5f604083850312156139db575f5ffd5b82356139e6816138e2565b915060208301356139f6816139bd565b809150509250929050565b5f60208284031215613a11575f5ffd5b5035919050565b5f60408284031215613a28575f5ffd5b61168e8383613911565b5f5f60208385031215613a43575f5ffd5b82356001600160401b03811115613a58575f5ffd5b613a6485828601613927565b90969095509350505050565b5f6101008284031215613921575f5ffd5b5f5f60408385031215613a92575f5ffd5b82356001600160401b03811115613aa7575f5ffd5b613ab385828601613a70565b92505060208301356139f6816138e2565b803563ffffffff81168114612b64575f5ffd5b5f5f60408385031215613ae8575f5ffd5b82359150613af860208401613ac4565b90509250929050565b5f5f5f60408486031215613b13575f5ffd5b83356001600160401b03811115613b28575f5ffd5b613b3486828701613927565b9094509250506020840135613b48816138e2565b809150509250925092565b5f60208284031215613b63575f5ffd5b61168e82613ac4565b5f60208284031215613b7c575f5ffd5b813560ff8116811461168e575f5ffd5b5f60208284031215613b9c575f5ffd5b81356001600160401b03811115613bb1575f5ffd5b61367484828501613a70565b5f5f60408385031215613bce575f5ffd5b8235613bd9816138e2565b946020939093013593505050565b5f5f60408385031215613bf8575f5ffd5b8235613c03816138e2565b915060208301356139f6816138e2565b5f5f5f60408486031215613c25575f5ffd5b8335613c30816138e2565b925060208401356001600160401b038111156139a4575f5ffd5b5f5f60608385031215613c5b575f5ffd5b8235613c66816138e2565b9150613af88460208501613911565b803561ffff81168114612b64575f5ffd5b5f60208284031215613c96575f5ffd5b61168e82613c75565b5f5f60408385031215613cb0575f5ffd5b8235613cbb816138e2565b9150613af860208401613c75565b5f5f5f60608486031215613cdb575f5ffd5b8335613ce6816138e2565b92506020840135613cf6816138e2565b9150613d0460408501613c75565b90509250925092565b5f5f5f5f5f60a08688031215613d21575f5ffd5b8535613d2c816138e2565b9450602086013593506040860135613d43816138e2565b9250613d5160608701613ac4565b9150613d5f60808701613c75565b90509295509295909350565b5f5f5f60808486031215613d7d575f5ffd5b8335613d88816138e2565b9250613d978560208601613911565b9150613d0460608501613c75565b8035613db0816138e2565b6001600160a01b0316825263ffffffff613dcc60208301613ac4565b1660208301525050565b6040810161133d8284613da5565b5f60208284031215613df4575f5ffd5b815161168e816139bd565b634e487b7160e01b5f52603260045260245ffd5b5f823560be19833603018112613e27575f5ffd5b9190910192915050565b5f5f8335601e19843603018112613e46575f5ffd5b83016020810192503590506001600160401b03811115613e64575f5ffd5b8060061b3603821315613967575f5ffd5b8183526020830192505f815f5b84811015613ed8578135613e95816138e2565b6001600160a01b0316865260208201356bffffffffffffffffffffffff8116808214613ebf575f5ffd5b6020880152506040958601959190910190600101613e82565b5093949350505050565b5f5f8335601e19843603018112613ef7575f5ffd5b83016020810192503590506001600160401b03811115613f15575f5ffd5b803603821315613967575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f613f568283613e31565b60c08552613f6860c086018284613e75565b9150506020830135613f79816138e2565b6001600160a01b03166020850152613f946040840184613e31565b858303604087015280835290915f91906020015b81831015613fe3578335613fbb816138e2565b6001600160a01b03168152602084810135908201526040938401936001939093019201613fa8565b613fef60608701613ac4565b63ffffffff81166060890152935061400960808701613ac4565b63ffffffff81166080890152935061402460a0870187613ee2565b9450925086810360a088015261377d818585613f23565b60018060a01b0384168152826020820152606060408201525f6140616060830184613f4b565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561133d5761133d61406a565b61409b8185613da5565b826040820152608060608201525f6140616080830184613f4b565b8181038181111561133d5761133d61406a565b5f816140d7576140d761406a565b505f190190565b5f8235609e19833603018112613e27575f5ffd5b5f6140fd8283613e31565b60a0855261410f60a086018284613e75565b9150506020830135614120816138e2565b6001600160a01b031660208501526040838101359085015263ffffffff61414960608501613ac4565b16606085015263ffffffff61416060808501613ac4565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61406160608301846140f2565b602081525f61168e60208301846140f2565b63ffffffff818116838216019081111561133d5761133d61406a565b5f823560fe19833603018112613e27575f5ffd5b828152604060208201525f6136746040830184613f4b565b5f6040828403128015614201575f5ffd5b50604080519081016001600160401b038111828210171561423057634e487b7160e01b5f52604160045260245ffd5b604052823561423e816138e2565b815261424c60208401613ac4565b60208201529392505050565b63ffffffff828116828216039081111561133d5761133d61406a565b5f63ffffffff8216806142895761428961406a565b5f190192915050565b5f602082840312156142a2575f5ffd5b5051919050565b60a081016142b78287613da5565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f5f8335601e198436030181126142f2575f5ffd5b8301803591506001600160401b0382111561430b575f5ffd5b6020019150600681901b3603821315613967575f5ffd5b5f5f8335601e19843603018112614337575f5ffd5b8301803591506001600160401b03821115614350575f5ffd5b6020019150600581901b3603821315613967575f5ffd5b5f5f8335601e1984360301811261437c575f5ffd5b8301803591506001600160401b03821115614395575f5ffd5b602001915036819003821315613967575f5ffd5b80516020808301519190811015613921575f1960209190910360031b1b16919050565b5f602082840312156143dc575f5ffd5b815161168e816138e2565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614410576144106143e7565b8063ffffffff84160691505092915050565b5f82614430576144306143e7565b500490565b5f82518060208501845e5f920191825250919050565b5f82614459576144596143e7565b500690565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea26469706673582212209c6cea3d73038b8033d3fec469401002517b2e79a9cee0b163bb26de1493358a64736f6c634300081e0033", + Bin: "0x6101c0604052348015610010575f5ffd5b506040516148fa3803806148fa83398101604081905261002f91610263565b608081015181516020830151604084015160a085015160c086015160e087015161010088015161012089015160608a01516001600160a01b038116610087576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261009d858261032d565b63ffffffff16156100c157604051630e06bd3160e01b815260040160405180910390fd5b6100ce620151808661032d565b63ffffffff16156100f25760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261013e610144565b50610360565b5f54610100900460ff16156101af5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146101fe575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60405161014081016001600160401b038111828210171561022f57634e487b7160e01b5f52604160045260245ffd5b60405290565b80516001600160a01b038116811461024b575f5ffd5b919050565b805163ffffffff8116811461024b575f5ffd5b5f610140828403128015610275575f5ffd5b5061027e610200565b61028783610235565b815261029560208401610235565b60208201526102a660408401610235565b60408201526102b760608401610235565b60608201526102c860808401610235565b60808201526102d960a08401610250565b60a08201526102ea60c08401610250565b60c08201526102fb60e08401610250565b60e082015261030d6101008401610250565b6101008201526103206101208401610250565b6101208201529392505050565b5f63ffffffff83168061034e57634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516144c96104315f395f81816105e5015261311801525f818161049901526132fb01525f81816103e8015261281601525f818161054701526132b901525f818161085e01526131a301525f818161079f015281816131f3015261326701525f81816108b201528181610a9f01528181611b1e0152611d8e01525f818161056e015261339601525f81816109250152611a8e01525f8181610731015281816126bb015261302b01526144c95ff3fe608060405234801561000f575f5ffd5b50600436106103a8575f3560e01c80638da5cb5b116101ea578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a13578063fbf1e2c114610a26578063fce36c7d14610a39578063ff9f6cce14610a4c575f5ffd5b8063f6efbb59146109c7578063f74e8eac146109da578063f8cd8448146109ed578063f96abf2e14610a00575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610947578063f22cef8514610974578063f2f07ab414610987578063f2fde38b146109b4575f5ffd5b8063de02e503146108e7578063e063f81f146108fa578063e810ce211461090d578063ea4d3c9b14610920575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610859578063c46db60614610880578063ca8aa7c7146108ad578063dcbb03b3146108d4575f5ffd5b8063a50a1d9c146107e7578063aebd8bae146107fa578063b3dbb0e014610827578063bb7e451f1461083a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107875780639d45c2811461079a5780639de4b35f146107c1578063a0169ddd146107d4575f5ffd5b80638da5cb5b146107535780639104c319146107645780639be3d4e41461077f575f5ffd5b80634596021c116102d65780635e9d83481161026b5780637b8f8b051161023b5780637b8f8b05146106e7578063863cb9a9146106ef578063865c695314610702578063886f11951461072c575f5ffd5b80635e9d83481461068a57806363f6a7981461069d5780636d21117e146106b2578063715018a6146106df575f5ffd5b806358baaa3e116102a657806358baaa3e14610644578063595c6a67146106575780635ac86ab71461065f5780635c975abb14610682575f5ffd5b80634596021c146105cd5780634657e26a146105e05780634b943960146106075780634d18cc351461062d575f5ffd5b8063149bc8721161034c57806339b70e381161031c57806339b70e38146105695780633a8c0786146105905780633ccc861d146105a75780633efe1db6146105ba575f5ffd5b8063149bc872146104ce5780632b9f64a4146104ef57806336af41fa1461052f57806337838ed014610542575f5ffd5b80630e9a53cf116103875780630e9a53cf146104345780630eb3834514610481578063131433b414610494578063136439dd146104bb575f5ffd5b806218572c146103ac57806304a0c502146103e35780630ca298991461041f575b5f5ffd5b6103ce6103ba3660046138f6565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61040a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103da565b61043261042d36600461396e565b610a5f565b005b61043c610ce8565b6040516103da91905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043261048f3660046139ca565b610de8565b61040a7f000000000000000000000000000000000000000000000000000000000000000081565b6104326104c9366004613a01565b610e68565b6104e16104dc366004613a18565b610ea2565b6040519081526020016103da565b6105176104fd3660046138f6565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103da565b61043261053d366004613a32565b610f17565b61040a7f000000000000000000000000000000000000000000000000000000000000000081565b6105177f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461040a90600160a01b900463ffffffff1681565b6104326105b5366004613a81565b611088565b6104326105c8366004613ad7565b6110af565b6104326105db366004613b01565b611285565b6105177f000000000000000000000000000000000000000000000000000000000000000081565b61061a6106153660046138f6565b6112e8565b60405161ffff90911681526020016103da565b60cb5461040a90600160c01b900463ffffffff1681565b610432610652366004613b53565b611343565b610432611357565b6103ce61066d366004613b6c565b606654600160ff9092169190911b9081161490565b6066546104e1565b6103ce610698366004613b8c565b61136b565b60cb5461061a90600160e01b900461ffff1681565b6103ce6106c0366004613bbd565b60cf60209081525f928352604080842090915290825290205460ff1681565b6104326113f6565b60ca546104e1565b6104326106fd3660046138f6565b611407565b6104e1610710366004613be7565b60cd60209081525f928352604080842090915290825290205481565b6105177f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610517565b61051773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61043c611418565b610432610795366004613c13565b6114b4565b61040a7f000000000000000000000000000000000000000000000000000000000000000081565b61061a6107cf366004613c4a565b611612565b6104326107e23660046138f6565b611695565b6104326107f5366004613c86565b6116a0565b6103ce610808366004613bbd565b60d260209081525f928352604080842090915290825290205460ff1681565b610432610835366004613c9f565b6116b1565b6104e16108483660046138f6565b60ce6020525f908152604090205481565b61040a7f000000000000000000000000000000000000000000000000000000000000000081565b6103ce61088e366004613bbd565b60d060209081525f928352604080842090915290825290205460ff1681565b6105177f000000000000000000000000000000000000000000000000000000000000000081565b6104326108e2366004613cc9565b6117bf565b61043c6108f5366004613a01565b6118ef565b61061a610908366004613be7565b61197f565b61040a61091b366004613a01565b6119e4565b6105177f000000000000000000000000000000000000000000000000000000000000000081565b6103ce610955366004613bbd565b60d360209081525f928352604080842090915290825290205460ff1681565b610432610982366004613be7565b611a65565b6103ce610995366004613bbd565b60d760209081525f928352604080842090915290825290205460ff1681565b6104326109c23660046138f6565b611bb2565b6104326109d5366004613d0d565b611c2d565b6104326109e8366004613d6b565b611d62565b6104e16109fb366004613a18565b611f0c565b610432610a0e366004613b53565b611f1c565b610432610a21366004613a01565b61204d565b60cb54610517906001600160a01b031681565b610432610a47366004613a32565b6120ba565b610432610a5a366004613a32565b6121eb565b6009610a6a8161234c565b610a7760208501856138f6565b610a8081612377565b610a8861239d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610ad4908890600401613dd6565b602060405180830381865afa158015610aef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b139190613de4565b610b3057604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610cd65736858583818110610b4d57610b4d613dff565b9050602002810190610b5f9190613e13565b90505f60ce81610b7260208b018b6138f6565b6001600160a01b031681526020808201929092526040015f90812054925090610b9d908a018a6138f6565b8284604051602001610bb19392919061403b565b6040516020818303038152906040528051906020012090505f610bd3846123f6565b9050600160d75f610be760208e018e6138f6565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c2683600161407e565b60ce5f610c3660208e018e6138f6565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610c9793929190614091565b60405180910390a3610cc6333083610cb56040890160208a016138f6565b6001600160a01b03169291906125e1565b505060019092019150610b329050565b50610ce16001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610dc0575f60ca610d236001846140b6565b81548110610d3357610d33613dff565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610da25750806040015163ffffffff164210155b15610dad5792915050565b5080610db8816140c9565b915050610d0f565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610df061264c565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b610e706126a6565b6066548181168114610e955760405163c61dca5d60e01b815260040160405180910390fd5b610e9e82612749565b5050565b5f80610eb160208401846138f6565b8360200135604051602001610efa9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6001610f228161234c565b335f90815260d1602052604090205460ff16610f5157604051635c427cd960e01b815260040160405180910390fd5b610f5961239d565b5f5b828110156110785736848483818110610f7657610f76613dff565b9050602002810190610f8891906140de565b335f81815260ce60209081526040808320549051949550939192610fb29290918591879101614170565b604051602081830303815290604052805190602001209050610fd383612786565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561100590839061407e565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061104c908890614196565b60405180910390a461106d333060408601803590610cb590602089016138f6565b505050600101610f5b565b506110836001609755565b505050565b60026110938161234c565b61109b61239d565b6110a58383612871565b6110836001609755565b60036110ba8161234c565b60cb546001600160a01b031633146110e557604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161111857604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061113e576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f9061115d90600160a01b900463ffffffff16426141a8565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b60026112908161234c565b61129861239d565b5f5b838110156112d7576112cf8585838181106112b7576112b7613dff565b90506020028101906112c991906141c4565b84612871565b60010161129a565b506112e26001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff169082015261133d90612af9565b92915050565b61134b61264c565b61135481612b69565b50565b61135f6126a6565b6113695f19612749565b565b5f6113ee8260ca61137f6020830183613b53565b63ffffffff168154811061139557611395613dff565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152612bda565b506001919050565b6113fe61264c565b6113695f612d7d565b61140f61264c565b61135481612dce565b604080516080810182525f80825260208201819052918101829052606081019190915260ca805461144b906001906140b6565b8154811061145b5761145b613dff565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b60056114bf8161234c565b836114c981612377565b6114d161239d565b5f5b83811015610cd657368585838181106114ee576114ee613dff565b90506020028101906115009190613e13565b6001600160a01b0388165f90815260ce6020908152604080832054905193945092611531918b91859187910161403b565b6040516020818303038152906040528051906020012090505f611553846123f6565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff1916600190811790915590915061159190849061407e565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906115e49088908a906141d8565b60405180910390a4611602333083610cb56040890160208a016138f6565b5050600190920191506114d39050565b6001600160a01b0382165f90815260d66020526040812061168e9082611645611640368790038701876141f0565b612e29565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612af9565b9392505050565b33610e9e8183612e8c565b6116a861264c565b61135481612eef565b60076116bc8161234c565b826116c681612377565b60cb545f906116e290600160a01b900463ffffffff16426141a8565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201529192509061173b90612af9565b6001600160a01b0387165f90815260d560205260409020909150611760908684612f5a565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b60066117ca8161234c565b836117d481612377565b60cb545f906117f090600160a01b900463ffffffff16426141a8565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff169281019290925291925061185790612af9565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611889908684612f5a565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca828154811061192557611925613dff565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061168e90612af9565b60ca545f905b63ffffffff811615611a4b578260ca611a04600184614258565b63ffffffff1681548110611a1a57611a1a613dff565b905f5260205f2090600202015f015403611a395761168e600182614258565b80611a4381614274565b9150506119ea565b5060405163504570e360e01b815260040160405180910390fd5b81611a6f81612377565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611ad3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611af79190613de4565b80611b8b575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611b65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b899190614292565b115b611ba85760405163fb494ea160e01b815260040160405180910390fd5b6110838383612e8c565b611bba61264c565b6001600160a01b038116611c245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61135481612d7d565b5f54610100900460ff1615808015611c4b57505f54600160ff909116105b80611c645750303b158015611c6457505f5460ff166001145b611cc75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611c1b565b5f805460ff191660011790558015611ce8575f805461ff0019166101001790555b611cf185612749565b611cfa86612d7d565b611d0384612dce565b611d0c83612b69565b611d1582612eef565b8015611d5a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6008611d6d8161234c565b83611d7781612377565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890611dc3908790600401613dd6565b602060405180830381865afa158015611dde573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e029190613de4565b611e1f57604051631fb1705560e21b815260040160405180910390fd5b60cb545f90611e3b90600160a01b900463ffffffff16426141a8565b6001600160a01b0387165f90815260d66020526040812091925090611e6d9082611645611640368b90038b018b6141f0565b6001600160a01b0388165f90815260d660205260408120919250611eb29190611e9e611640368b90038b018b6141f0565b81526020019081526020015f208684612f5a565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a604051611efb94939291906142a9565b60405180910390a350505050505050565b5f6001610eb160208401846138f6565b6003611f278161234c565b60cb546001600160a01b03163314611f5257604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff831610611f7a576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff1681548110611f9457611f94613dff565b905f5260205f20906002020190508060010160089054906101000a900460ff1615611fd257604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061200357604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b612055613029565b6066548019821981161461207c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6120c48161234c565b6120cc61239d565b5f5b8281101561107857368484838181106120e9576120e9613dff565b90506020028101906120fb91906140de565b335f81815260ce602090815260408083205490519495509391926121259290918591879101614170565b60405160208183030381529060405280519060200120905061214683612786565b335f90815260cf602090815260408083208484529091529020805460ff1916600190811790915561217890839061407e565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906121bf908890614196565b60405180910390a46121e0333060408601803590610cb590602089016138f6565b5050506001016120ce565b60046121f68161234c565b335f90815260d1602052604090205460ff1661222557604051635c427cd960e01b815260040160405180910390fd5b61222d61239d565b5f5b82811015611078573684848381811061224a5761224a613dff565b905060200281019061225c91906140de565b335f81815260ce602090815260408083205490519495509391926122869290918591879101614170565b6040516020818303038152906040528051906020012090506122a783612786565b335f90815260d2602090815260408083208484529091529020805460ff191660019081179091556122d990839061407e565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b90612320908890614196565b60405180910390a4612341333060408601803590610cb590602089016138f6565b50505060010161222f565b606654600160ff83161b908116036113545760405163840a48d560e01b815260040160405180910390fd5b612380816130da565b6113545760405163932d94f760e01b815260040160405180910390fd5b6002609754036123ef5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611c1b565b6002609755565b5f61242961240483806142dd565b6124146080860160608701613b53565b61242460a0870160808801613b53565b613183565b5f61243760408401846142dd565b9050116124575760405163796cc52560e01b815260040160405180910390fd5b4261246860a0840160808501613b53565b6124786080850160608601613b53565b61248291906141a8565b63ffffffff16106124a65760405163150358a160e21b815260040160405180910390fd5b5f80805b6124b760408601866142dd565b90508110156125a857366124ce60408701876142dd565b838181106124de576124de613dff565b6040029190910191505f90506124f760208301836138f6565b6001600160a01b03160361251e57604051630863a45360e11b815260040160405180910390fd5b61252b60208201826138f6565b6001600160a01b0316836001600160a01b03161061255c576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612580576040516310eb483f60e21b815260040160405180910390fd5b61258d60208201826138f6565b925061259d60208201358561407e565b9350506001016124aa565b506f4b3b4ca85a86c47a098a223fffffffff8211156125da5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526112e29085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613481565b6033546001600160a01b031633146113695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611c1b565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015612708573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061272c9190613de4565b61136957604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6127b361279382806142dd565b6127a36080850160608601613b53565b61242460a0860160808701613b53565b5f8160400135116127d7576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff8160400135111561280c5760405163070b5a6f60e21b815260040160405180910390fd5b61283c63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164261407e565b61284c6080830160608401613b53565b63ffffffff16111561135457604051637ee2b44360e01b815260040160405180910390fd5b5f60ca6128816020850185613b53565b63ffffffff168154811061289757612897613dff565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015290506128f78382612bda565b5f61290860808501606086016138f6565b6001600160a01b038082165f90815260cc6020526040902054919250168061292d5750805b336001600160a01b0382161461295657604051635c427cd960e01b815260040160405180910390fd5b5f5b61296560a0870187614322565b9050811015611d5a573661297c60e08801886142dd565b8381811061298c5761298c613dff565b6001600160a01b0387165f90815260cd6020908152604080832093029490940194509290915082906129c0908501856138f6565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612a065760405163aa385e8160e01b815260040160405180910390fd5b5f612a158260208501356140b6565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612a4290876138f6565b6001600160a01b031681526020808201929092526040015f2091909155612a839089908390612a73908701876138f6565b6001600160a01b03169190613554565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ac760208901896138f6565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612958565b5f816040015163ffffffff165f1480612b2b5750815161ffff908116148015612b2b5750816040015163ffffffff1642105b15612b4357505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612b5c57815161133d565b506020015190565b919050565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b806060015115612bfd57604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff16421015612c2857604051631437a2bb60e31b815260040160405180910390fd5b612c3560c0830183614322565b9050612c4460a0840184614322565b905014612c64576040516343714afd60e01b815260040160405180910390fd5b612c7160e08301836142dd565b9050612c8060c0840184614322565b905014612ca0576040516343714afd60e01b815260040160405180910390fd5b8051612ccc90612cb66040850160208601613b53565b612cc36040860186614367565b86606001613584565b5f5b612cdb60a0840184614322565b905081101561108357612d756080840135612cf960a0860186614322565b84818110612d0957612d09613dff565b9050602002016020810190612d1e9190613b53565b612d2b60c0870187614322565b85818110612d3b57612d3b613dff565b9050602002810190612d4d9190614367565b612d5a60e08901896142dd565b87818110612d6a57612d6a613dff565b905060400201613628565b600101612cce565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff16604051602001612e7492919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261133d906143a9565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff83161115612f815760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff164211612faf57604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f03612fd657825461ffff191661ffff178355612fed565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613085573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130a991906143cc565b6001600160a01b0316336001600160a01b0316146113695760405163794821ff60e01b815260040160405180910390fd5b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb890608401602060405180830381865afa15801561315f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133d9190613de4565b826131a15760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1611156131ee57604051630dd0b9f560e21b815260040160405180910390fd5b6132187f0000000000000000000000000000000000000000000000000000000000000000826143fb565b63ffffffff161561323c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116132625760405163cb3f434d60e01b815260040160405180910390fd5b61328c7f0000000000000000000000000000000000000000000000000000000000000000836143fb565b63ffffffff16156132b057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426132e991906140b6565b1115801561332357508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6133405760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015611d5a575f86868381811061335e5761335e613dff565b61337492602060409092020190810191506138f6565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156133dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134019190613de4565b8061342857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61344557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106134775760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613343565b5f6134d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136669092919063ffffffff16565b905080515f14806134f55750808060200190518101906134f59190613de4565b6110835760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611c1b565b6040516001600160a01b03831660248201526044810182905261108390849063a9059cbb60e01b90606401612615565b61358f602083614422565b6001901b8463ffffffff16106135b75760405162c6c39d60e71b815260040160405180910390fd5b5f6135c182610ea2565b905061360b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff891661367c565b611d5a576040516369ca16c960e01b815260040160405180910390fd5b613633602083614422565b6001901b8463ffffffff161061365c5760405163054ff4df60e51b815260040160405180910390fd5b5f6135c182611f0c565b606061367484845f856136b1565b949350505050565b5f8361369b576040516329e7276760e11b815260040160405180910390fd5b836136a7868585613788565b1495945050505050565b6060824710156137125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611c1b565b5f5f866001600160a01b0316858760405161372d9190614435565b5f6040518083038185875af1925050503d805f8114613767576040519150601f19603f3d011682016040523d82523d5f602084013e61376c565b606091505b509150915061377d87838387613845565b979650505050505050565b5f83515f0361379857508161168e565b602084516137a6919061444b565b156137c4576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613825576137db60028561444b565b5f036137fc57815f528086015160205260405f209150600284049350613813565b808601515f528160205260405f2091506002840493505b61381e60208261407e565b90506137c8565b508215613674576040516363df817160e01b815260040160405180910390fd5b606083156138b35782515f036138ac576001600160a01b0385163b6138ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611c1b565b5081613674565b61367483838151156138c85781518083602001fd5b8060405162461bcd60e51b8152600401611c1b919061445e565b6001600160a01b0381168114611354575f5ffd5b5f60208284031215613906575f5ffd5b813561168e816138e2565b5f60408284031215613921575f5ffd5b50919050565b5f5f83601f840112613937575f5ffd5b5081356001600160401b0381111561394d575f5ffd5b6020830191508360208260051b8501011115613967575f5ffd5b9250929050565b5f5f5f60608486031215613980575f5ffd5b61398a8585613911565b925060408401356001600160401b038111156139a4575f5ffd5b6139b086828701613927565b9497909650939450505050565b8015158114611354575f5ffd5b5f5f604083850312156139db575f5ffd5b82356139e6816138e2565b915060208301356139f6816139bd565b809150509250929050565b5f60208284031215613a11575f5ffd5b5035919050565b5f60408284031215613a28575f5ffd5b61168e8383613911565b5f5f60208385031215613a43575f5ffd5b82356001600160401b03811115613a58575f5ffd5b613a6485828601613927565b90969095509350505050565b5f6101008284031215613921575f5ffd5b5f5f60408385031215613a92575f5ffd5b82356001600160401b03811115613aa7575f5ffd5b613ab385828601613a70565b92505060208301356139f6816138e2565b803563ffffffff81168114612b64575f5ffd5b5f5f60408385031215613ae8575f5ffd5b82359150613af860208401613ac4565b90509250929050565b5f5f5f60408486031215613b13575f5ffd5b83356001600160401b03811115613b28575f5ffd5b613b3486828701613927565b9094509250506020840135613b48816138e2565b809150509250925092565b5f60208284031215613b63575f5ffd5b61168e82613ac4565b5f60208284031215613b7c575f5ffd5b813560ff8116811461168e575f5ffd5b5f60208284031215613b9c575f5ffd5b81356001600160401b03811115613bb1575f5ffd5b61367484828501613a70565b5f5f60408385031215613bce575f5ffd5b8235613bd9816138e2565b946020939093013593505050565b5f5f60408385031215613bf8575f5ffd5b8235613c03816138e2565b915060208301356139f6816138e2565b5f5f5f60408486031215613c25575f5ffd5b8335613c30816138e2565b925060208401356001600160401b038111156139a4575f5ffd5b5f5f60608385031215613c5b575f5ffd5b8235613c66816138e2565b9150613af88460208501613911565b803561ffff81168114612b64575f5ffd5b5f60208284031215613c96575f5ffd5b61168e82613c75565b5f5f60408385031215613cb0575f5ffd5b8235613cbb816138e2565b9150613af860208401613c75565b5f5f5f60608486031215613cdb575f5ffd5b8335613ce6816138e2565b92506020840135613cf6816138e2565b9150613d0460408501613c75565b90509250925092565b5f5f5f5f5f60a08688031215613d21575f5ffd5b8535613d2c816138e2565b9450602086013593506040860135613d43816138e2565b9250613d5160608701613ac4565b9150613d5f60808701613c75565b90509295509295909350565b5f5f5f60808486031215613d7d575f5ffd5b8335613d88816138e2565b9250613d978560208601613911565b9150613d0460608501613c75565b8035613db0816138e2565b6001600160a01b0316825263ffffffff613dcc60208301613ac4565b1660208301525050565b6040810161133d8284613da5565b5f60208284031215613df4575f5ffd5b815161168e816139bd565b634e487b7160e01b5f52603260045260245ffd5b5f823560be19833603018112613e27575f5ffd5b9190910192915050565b5f5f8335601e19843603018112613e46575f5ffd5b83016020810192503590506001600160401b03811115613e64575f5ffd5b8060061b3603821315613967575f5ffd5b8183526020830192505f815f5b84811015613ed8578135613e95816138e2565b6001600160a01b0316865260208201356bffffffffffffffffffffffff8116808214613ebf575f5ffd5b6020880152506040958601959190910190600101613e82565b5093949350505050565b5f5f8335601e19843603018112613ef7575f5ffd5b83016020810192503590506001600160401b03811115613f15575f5ffd5b803603821315613967575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f613f568283613e31565b60c08552613f6860c086018284613e75565b9150506020830135613f79816138e2565b6001600160a01b03166020850152613f946040840184613e31565b858303604087015280835290915f91906020015b81831015613fe3578335613fbb816138e2565b6001600160a01b03168152602084810135908201526040938401936001939093019201613fa8565b613fef60608701613ac4565b63ffffffff81166060890152935061400960808701613ac4565b63ffffffff81166080890152935061402460a0870187613ee2565b9450925086810360a088015261377d818585613f23565b60018060a01b0384168152826020820152606060408201525f6140616060830184613f4b565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561133d5761133d61406a565b61409b8185613da5565b826040820152608060608201525f6140616080830184613f4b565b8181038181111561133d5761133d61406a565b5f816140d7576140d761406a565b505f190190565b5f8235609e19833603018112613e27575f5ffd5b5f6140fd8283613e31565b60a0855261410f60a086018284613e75565b9150506020830135614120816138e2565b6001600160a01b031660208501526040838101359085015263ffffffff61414960608501613ac4565b16606085015263ffffffff61416060808501613ac4565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61406160608301846140f2565b602081525f61168e60208301846140f2565b63ffffffff818116838216019081111561133d5761133d61406a565b5f823560fe19833603018112613e27575f5ffd5b828152604060208201525f6136746040830184613f4b565b5f6040828403128015614201575f5ffd5b50604080519081016001600160401b038111828210171561423057634e487b7160e01b5f52604160045260245ffd5b604052823561423e816138e2565b815261424c60208401613ac4565b60208201529392505050565b63ffffffff828116828216039081111561133d5761133d61406a565b5f63ffffffff8216806142895761428961406a565b5f190192915050565b5f602082840312156142a2575f5ffd5b5051919050565b60a081016142b78287613da5565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f5f8335601e198436030181126142f2575f5ffd5b8301803591506001600160401b0382111561430b575f5ffd5b6020019150600681901b3603821315613967575f5ffd5b5f5f8335601e19843603018112614337575f5ffd5b8301803591506001600160401b03821115614350575f5ffd5b6020019150600581901b3603821315613967575f5ffd5b5f5f8335601e1984360301811261437c575f5ffd5b8301803591506001600160401b03821115614395575f5ffd5b602001915036819003821315613967575f5ffd5b80516020808301519190811015613921575f1960209190910360031b1b16919050565b5f602082840312156143dc575f5ffd5b815161168e816138e2565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614410576144106143e7565b8063ffffffff84160691505092915050565b5f82614430576144306143e7565b500490565b5f82518060208501845e5f920191825250919050565b5f82614459576144596143e7565b500690565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea2646970667358221220d27822035ddf1fd469a53d942647ec2995c0193604a2ebbde8b358676c71be5464736f6c634300081e0033", } // RewardsCoordinatorABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/SlashingLib/binding.go b/pkg/bindings/SlashingLib/binding.go index 89ad857d97..6ecea90664 100644 --- a/pkg/bindings/SlashingLib/binding.go +++ b/pkg/bindings/SlashingLib/binding.go @@ -32,7 +32,7 @@ var ( // SlashingLibMetaData contains all meta data concerning the SlashingLib contract. var SlashingLibMetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"InvalidDepositScalingFactor\",\"inputs\":[]}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220cec16e6c36b4b09882629d3cae135ba262378f64ddf72d1a438ca64d57c7c4f564736f6c634300081e0033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212205d60ae665204d3c9f6165c798df312de65baa13e163c9b38dc9c83049ed267dc64736f6c634300081e0033", } // SlashingLibABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/Snapshots/binding.go b/pkg/bindings/Snapshots/binding.go index 7a74fec16a..e0c867e596 100644 --- a/pkg/bindings/Snapshots/binding.go +++ b/pkg/bindings/Snapshots/binding.go @@ -32,7 +32,7 @@ var ( // SnapshotsMetaData contains all meta data concerning the Snapshots contract. var SnapshotsMetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122031fa11f95c220a270097eeebba7aa928860ef995de799676ed036603bd68670164736f6c634300081e0033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220732ebdb9ea984b4b0e07bad7dd898517c055524962904f8fc1155d1a5442e0b664736f6c634300081e0033", } // SnapshotsABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/StrategyBase/binding.go b/pkg/bindings/StrategyBase/binding.go index e0e2e7802c..248de1b4df 100644 --- a/pkg/bindings/StrategyBase/binding.go +++ b/pkg/bindings/StrategyBase/binding.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\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"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\"}],\"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\":\"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\":[{\"name\":\"amountOut\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ExchangeRateEmitted\",\"inputs\":[{\"name\":\"rate\",\"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\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"error\",\"name\":\"BalanceExceedsMaxTotalDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxPerDepositExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewSharesZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnderlyingToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TotalSharesExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalAmountExceedsTotalDeposits\",\"inputs\":[]}]", - Bin: "0x60c060405234801561000f575f5ffd5b5060405161131a38038061131a83398101604081905261002e9161014b565b806001600160a01b038116610056576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a052610071610078565b5050610183565b5f54610100900460ff16156100e35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610132575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610148575f5ffd5b50565b5f5f6040838503121561015c575f5ffd5b825161016781610134565b602084015190925061017881610134565b809150509250929050565b60805160a0516111536101c75f395f81816101750152818161034a0152818161064301526106c501525f818161022b015281816108730152610bf101526111535ff3fe608060405234801561000f575f5ffd5b5060043610610127575f3560e01c8063886f1195116100a9578063ce7c2ac21161006e578063ce7c2ac21461029b578063d9caed12146102ae578063e3dae51c146102c1578063f3e73875146102d4578063fabc1cbc146102e7575f5ffd5b8063886f1195146102265780638c8710191461024d5780638f6a624014610260578063ab5921e114610273578063c4d66de814610288575f5ffd5b8063553ca5f8116100ef578063553ca5f8146101c1578063595c6a67146101d45780635ac86ab7146101dc5780635c975abb1461020b5780637a8b263714610213575f5ffd5b8063136439dd1461012b5780632495a5991461014057806339b70e38146101705780633a98ef391461019757806347e7ef24146101ae575b5f5ffd5b61013e610139366004610ecb565b6102fa565b005b603254610153906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101537f000000000000000000000000000000000000000000000000000000000000000081565b6101a060335481565b604051908152602001610167565b6101a06101bc366004610ef6565b610334565b6101a06101cf366004610f20565b610463565b61013e610476565b6101fb6101ea366004610f50565b6001805460ff9092161b9081161490565b6040519015158152602001610167565b6001546101a0565b6101a0610221366004610ecb565b61048a565b6101537f000000000000000000000000000000000000000000000000000000000000000081565b6101a061025b366004610ecb565b6104d3565b6101a061026e366004610f20565b6104dd565b61027b6104ea565b6040516101679190610f6b565b61013e610296366004610f20565b61050a565b6101a06102a9366004610f20565b61061c565b6101a06102bc366004610fa0565b6106ae565b6101a06102cf366004610ecb565b6107b0565b6101a06102e2366004610ecb565b6107e7565b61013e6102f5366004610ecb565b6107f1565b61030261085e565b60015481811681146103275760405163c61dca5d60e01b815260040160405180910390fd5b61033082610901565b5050565b5f5f61033f8161093e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610388576040516348da714f60e01b815260040160405180910390fd5b6103928484610974565b6033545f6103a26103e883610ff2565b90505f6103e86103b06109a2565b6103ba9190610ff2565b90505f6103c78783611005565b9050806103d48489611018565b6103de919061102f565b9550855f0361040057604051630c392ed360e11b815260040160405180910390fd5b61040a8685610ff2565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561043f57604051632f14e8a360e11b815260040160405180910390fd5b610458826103e86033546104539190610ff2565b610a11565b505050505092915050565b5f6104706102218361061c565b92915050565b61047e61085e565b6104885f19610901565b565b5f5f6103e860335461049c9190610ff2565b90505f6103e86104aa6109a2565b6104b49190610ff2565b9050816104c18583611018565b6104cb919061102f565b949350505050565b5f610470826107b0565b5f6104706102e28361061c565b60606040518060800160405280604d81526020016110d1604d9139905090565b5f54610100900460ff161580801561052857505f54600160ff909116105b806105415750303b15801561054157505f5460ff166001145b6105a95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156105ca575f805461ff0019166101001790555b6105d382610a5d565b8015610330575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa15801561068a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610470919061104e565b5f60016106ba8161093e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610703576040516348da714f60e01b815260040160405180910390fd5b61070e858585610ba8565b6033548084111561073257604051630b469df360e41b815260040160405180910390fd5b5f61073f6103e883610ff2565b90505f6103e861074d6109a2565b6107579190610ff2565b9050816107648783611018565b61076e919061102f565b945061077a8684611005565b60335561079a61078a8683611005565b6103e86033546104539190610ff2565b6107a5888887610bdb565b505050509392505050565b5f5f6103e86033546107c29190610ff2565b90505f6103e86107d06109a2565b6107da9190610ff2565b9050806104c18386611018565b5f6104708261048a565b6107f9610bef565b600154801982198116146108205760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e49190611065565b61048857604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610953816001805460ff9092161b9081161490565b156109715760405163840a48d560e01b815260040160405180910390fd5b50565b6032546001600160a01b0383811691161461033057604051630312abdd60e61b815260040160405180910390fd5b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156109e8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0c919061104e565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610a4584670de0b6b3a7640000611018565b610a4f919061102f565b604051908152602001610610565b5f54610100900460ff16610ac75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016105a0565b603280546001600160a01b0319166001600160a01b038316179055610aeb5f610901565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b819190611084565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b03838116911614610bd657604051630312abdd60e61b815260040160405180910390fd5b505050565b610bd66001600160a01b0383168483610ca0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f919061109f565b6001600160a01b0316336001600160a01b0316146104885760405163794821ff60e01b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610bd6928692915f91610d2f918516908490610dae565b905080515f1480610d4f575080806020019051810190610d4f9190611065565b610bd65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105a0565b60606104cb84845f85855f5f866001600160a01b03168587604051610dd391906110ba565b5f6040518083038185875af1925050503d805f8114610e0d576040519150601f19603f3d011682016040523d82523d5f602084013e610e12565b606091505b5091509150610e2387838387610e2e565b979650505050505050565b60608315610e9c5782515f03610e95576001600160a01b0385163b610e955760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105a0565b50816104cb565b6104cb8383815115610eb15781518083602001fd5b8060405162461bcd60e51b81526004016105a09190610f6b565b5f60208284031215610edb575f5ffd5b5035919050565b6001600160a01b0381168114610971575f5ffd5b5f5f60408385031215610f07575f5ffd5b8235610f1281610ee2565b946020939093013593505050565b5f60208284031215610f30575f5ffd5b8135610f3b81610ee2565b9392505050565b60ff81168114610971575f5ffd5b5f60208284031215610f60575f5ffd5b8135610f3b81610f42565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f60608486031215610fb2575f5ffd5b8335610fbd81610ee2565b92506020840135610fcd81610ee2565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561047057610470610fde565b8181038181111561047057610470610fde565b808202811582820484141761047057610470610fde565b5f8261104957634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561105e575f5ffd5b5051919050565b5f60208284031215611075575f5ffd5b81518015158114610f3b575f5ffd5b5f60208284031215611094575f5ffd5b8151610f3b81610f42565b5f602082840312156110af575f5ffd5b8151610f3b81610ee2565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a264697066735822122015c7439f87c69c5a56c6f6f48a60aaf56a0a25e2b656e3cc4d7ddb89b1f8655964736f6c634300081e0033", + Bin: "0x60c060405234801561000f575f5ffd5b5060405161131a38038061131a83398101604081905261002e9161014b565b806001600160a01b038116610056576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a052610071610078565b5050610183565b5f54610100900460ff16156100e35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610132575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610148575f5ffd5b50565b5f5f6040838503121561015c575f5ffd5b825161016781610134565b602084015190925061017881610134565b809150509250929050565b60805160a0516111536101c75f395f81816101750152818161034a0152818161064301526106c501525f818161022b015281816108730152610bf101526111535ff3fe608060405234801561000f575f5ffd5b5060043610610127575f3560e01c8063886f1195116100a9578063ce7c2ac21161006e578063ce7c2ac21461029b578063d9caed12146102ae578063e3dae51c146102c1578063f3e73875146102d4578063fabc1cbc146102e7575f5ffd5b8063886f1195146102265780638c8710191461024d5780638f6a624014610260578063ab5921e114610273578063c4d66de814610288575f5ffd5b8063553ca5f8116100ef578063553ca5f8146101c1578063595c6a67146101d45780635ac86ab7146101dc5780635c975abb1461020b5780637a8b263714610213575f5ffd5b8063136439dd1461012b5780632495a5991461014057806339b70e38146101705780633a98ef391461019757806347e7ef24146101ae575b5f5ffd5b61013e610139366004610ecb565b6102fa565b005b603254610153906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101537f000000000000000000000000000000000000000000000000000000000000000081565b6101a060335481565b604051908152602001610167565b6101a06101bc366004610ef6565b610334565b6101a06101cf366004610f20565b610463565b61013e610476565b6101fb6101ea366004610f50565b6001805460ff9092161b9081161490565b6040519015158152602001610167565b6001546101a0565b6101a0610221366004610ecb565b61048a565b6101537f000000000000000000000000000000000000000000000000000000000000000081565b6101a061025b366004610ecb565b6104d3565b6101a061026e366004610f20565b6104dd565b61027b6104ea565b6040516101679190610f6b565b61013e610296366004610f20565b61050a565b6101a06102a9366004610f20565b61061c565b6101a06102bc366004610fa0565b6106ae565b6101a06102cf366004610ecb565b6107b0565b6101a06102e2366004610ecb565b6107e7565b61013e6102f5366004610ecb565b6107f1565b61030261085e565b60015481811681146103275760405163c61dca5d60e01b815260040160405180910390fd5b61033082610901565b5050565b5f5f61033f8161093e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610388576040516348da714f60e01b815260040160405180910390fd5b6103928484610974565b6033545f6103a26103e883610ff2565b90505f6103e86103b06109a2565b6103ba9190610ff2565b90505f6103c78783611005565b9050806103d48489611018565b6103de919061102f565b9550855f0361040057604051630c392ed360e11b815260040160405180910390fd5b61040a8685610ff2565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561043f57604051632f14e8a360e11b815260040160405180910390fd5b610458826103e86033546104539190610ff2565b610a11565b505050505092915050565b5f6104706102218361061c565b92915050565b61047e61085e565b6104885f19610901565b565b5f5f6103e860335461049c9190610ff2565b90505f6103e86104aa6109a2565b6104b49190610ff2565b9050816104c18583611018565b6104cb919061102f565b949350505050565b5f610470826107b0565b5f6104706102e28361061c565b60606040518060800160405280604d81526020016110d1604d9139905090565b5f54610100900460ff161580801561052857505f54600160ff909116105b806105415750303b15801561054157505f5460ff166001145b6105a95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156105ca575f805461ff0019166101001790555b6105d382610a5d565b8015610330575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa15801561068a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610470919061104e565b5f60016106ba8161093e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610703576040516348da714f60e01b815260040160405180910390fd5b61070e858585610ba8565b6033548084111561073257604051630b469df360e41b815260040160405180910390fd5b5f61073f6103e883610ff2565b90505f6103e861074d6109a2565b6107579190610ff2565b9050816107648783611018565b61076e919061102f565b945061077a8684611005565b60335561079a61078a8683611005565b6103e86033546104539190610ff2565b6107a5888887610bdb565b505050509392505050565b5f5f6103e86033546107c29190610ff2565b90505f6103e86107d06109a2565b6107da9190610ff2565b9050806104c18386611018565b5f6104708261048a565b6107f9610bef565b600154801982198116146108205760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e49190611065565b61048857604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610953816001805460ff9092161b9081161490565b156109715760405163840a48d560e01b815260040160405180910390fd5b50565b6032546001600160a01b0383811691161461033057604051630312abdd60e61b815260040160405180910390fd5b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156109e8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0c919061104e565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610a4584670de0b6b3a7640000611018565b610a4f919061102f565b604051908152602001610610565b5f54610100900460ff16610ac75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016105a0565b603280546001600160a01b0319166001600160a01b038316179055610aeb5f610901565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b819190611084565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b03838116911614610bd657604051630312abdd60e61b815260040160405180910390fd5b505050565b610bd66001600160a01b0383168483610ca0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f919061109f565b6001600160a01b0316336001600160a01b0316146104885760405163794821ff60e01b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610bd6928692915f91610d2f918516908490610dae565b905080515f1480610d4f575080806020019051810190610d4f9190611065565b610bd65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105a0565b60606104cb84845f85855f5f866001600160a01b03168587604051610dd391906110ba565b5f6040518083038185875af1925050503d805f8114610e0d576040519150601f19603f3d011682016040523d82523d5f602084013e610e12565b606091505b5091509150610e2387838387610e2e565b979650505050505050565b60608315610e9c5782515f03610e95576001600160a01b0385163b610e955760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105a0565b50816104cb565b6104cb8383815115610eb15781518083602001fd5b8060405162461bcd60e51b81526004016105a09190610f6b565b5f60208284031215610edb575f5ffd5b5035919050565b6001600160a01b0381168114610971575f5ffd5b5f5f60408385031215610f07575f5ffd5b8235610f1281610ee2565b946020939093013593505050565b5f60208284031215610f30575f5ffd5b8135610f3b81610ee2565b9392505050565b60ff81168114610971575f5ffd5b5f60208284031215610f60575f5ffd5b8135610f3b81610f42565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f60608486031215610fb2575f5ffd5b8335610fbd81610ee2565b92506020840135610fcd81610ee2565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561047057610470610fde565b8181038181111561047057610470610fde565b808202811582820484141761047057610470610fde565b5f8261104957634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561105e575f5ffd5b5051919050565b5f60208284031215611075575f5ffd5b81518015158114610f3b575f5ffd5b5f60208284031215611094575f5ffd5b8151610f3b81610f42565b5f602082840312156110af575f5ffd5b8151610f3b81610ee2565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220f59ebf5750243b032f2595e2fdc9e231c645474f438160a7e73ce584f44c9b1364736f6c634300081e0033", } // StrategyBaseABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/StrategyBaseTVLLimits/binding.go b/pkg/bindings/StrategyBaseTVLLimits/binding.go index 63cac6a1d3..93f351fbdb 100644 --- a/pkg/bindings/StrategyBaseTVLLimits/binding.go +++ b/pkg/bindings/StrategyBaseTVLLimits/binding.go @@ -32,7 +32,7 @@ var ( // StrategyBaseTVLLimitsMetaData contains all meta data concerning the StrategyBaseTVLLimits contract. var StrategyBaseTVLLimitsMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"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\":\"getTVLLimits\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_maxPerDeposit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_maxTotalDeposits\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"maxPerDeposit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxTotalDeposits\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"setTVLLimits\",\"inputs\":[{\"name\":\"newMaxPerDeposit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"newMaxTotalDeposits\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":[{\"name\":\"amountOut\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ExchangeRateEmitted\",\"inputs\":[{\"name\":\"rate\",\"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\":\"MaxPerDepositUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxTotalDepositsUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"error\",\"name\":\"BalanceExceedsMaxTotalDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxPerDepositExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewSharesZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnderlyingToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TotalSharesExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalAmountExceedsTotalDeposits\",\"inputs\":[]}]", - Bin: "0x60c060405234801561000f575f5ffd5b506040516115f73803806115f783398101604081905261002e9161014f565b8181806001600160a01b038116610058576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a05261007361007c565b50505050610187565b5f54610100900460ff16156100e75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610136575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014c575f5ffd5b50565b5f5f60408385031215610160575f5ffd5b825161016b81610138565b602084015190925061017c81610138565b809150509250929050565b60805160a05161142c6101cb5f395f81816101ce015281816103f50152818161077d01526107ff01525f81816102960152818161099a0152610b02015261142c5ff3fe608060405234801561000f575f5ffd5b506004361061016d575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc11461033f578063e3dae51c1461035a578063f3e738751461036d578063fabc1cbc14610380575f5ffd5b8063c4d66de814610306578063ce7c2ac214610319578063d9caed121461032c575f5ffd5b80637a8b26371461027e578063886f1195146102915780638c871019146102b85780638f6a6240146102cb578063a6ab36f2146102de578063ab5921e1146102f1575f5ffd5b806347e7ef241161012a57806347e7ef2414610210578063553ca5f814610223578063595c6a67146102365780635ac86ab71461023e5780635c975abb1461026d57806361b01b5d14610275575f5ffd5b806311c70c9d14610171578063136439dd146101865780632495a5991461019957806339b70e38146101c95780633a98ef39146101f057806343fe08b014610207575b5f5ffd5b61018461017f366004611100565b610393565b005b610184610194366004611120565b6103a9565b6032546101ac906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101ac7f000000000000000000000000000000000000000000000000000000000000000081565b6101f960335481565b6040519081526020016101c0565b6101f960645481565b6101f961021e36600461114b565b6103df565b6101f9610231366004611175565b61050e565b610184610521565b61025d61024c3660046111a5565b6001805460ff9092161b9081161490565b60405190151581526020016101c0565b6001546101f9565b6101f960655481565b6101f961028c366004611120565b610535565b6101ac7f000000000000000000000000000000000000000000000000000000000000000081565b6101f96102c6366004611120565b61057e565b6101f96102d9366004611175565b610588565b6101846102ec3660046111c0565b610595565b6102f9610670565b6040516101c091906111f6565b610184610314366004611175565b610690565b6101f9610327366004611175565b610756565b6101f961033a36600461122b565b6107e8565b606454606554604080519283526020830191909152016101c0565b6101f9610368366004611120565b6108ea565b6101f961037b366004611120565b610921565b61018461038e366004611120565b61092b565b61039b610998565b6103a58282610a49565b5050565b6103b1610aed565b60015481811681146103d65760405163c61dca5d60e01b815260040160405180910390fd5b6103a582610b90565b5f5f6103ea81610bcd565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610433576040516348da714f60e01b815260040160405180910390fd5b61043d8484610c03565b6033545f61044d6103e88361127d565b90505f6103e861045b610c5a565b610465919061127d565b90505f6104728783611290565b90508061047f84896112a3565b61048991906112ba565b9550855f036104ab57604051630c392ed360e11b815260040160405180910390fd5b6104b5868561127d565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156104ea57604051632f14e8a360e11b815260040160405180910390fd5b610503826103e86033546104fe919061127d565b610cc9565b505050505092915050565b5f61051b61028c83610756565b92915050565b610529610aed565b6105335f19610b90565b565b5f5f6103e8603354610547919061127d565b90505f6103e8610555610c5a565b61055f919061127d565b90508161056c85836112a3565b61057691906112ba565b949350505050565b5f61051b826108ea565b5f61051b61037b83610756565b5f54610100900460ff16158080156105b357505f54600160ff909116105b806105cc5750303b1580156105cc57505f5460ff166001145b6105f15760405162461bcd60e51b81526004016105e8906112d9565b60405180910390fd5b5f805460ff191660011790558015610612575f805461ff0019166101001790555b61061c8484610a49565b61062582610d15565b801561066a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d81526020016113aa604d9139905090565b5f54610100900460ff16158080156106ae57505f54600160ff909116105b806106c75750303b1580156106c757505f5460ff166001145b6106e35760405162461bcd60e51b81526004016105e8906112d9565b5f805460ff191660011790558015610704575f805461ff0019166101001790555b61070d82610d15565b80156103a5575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa1580156107c4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051b9190611327565b5f60016107f481610bcd565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461083d576040516348da714f60e01b815260040160405180910390fd5b610848858585610e60565b6033548084111561086c57604051630b469df360e41b815260040160405180910390fd5b5f6108796103e88361127d565b90505f6103e8610887610c5a565b610891919061127d565b90508161089e87836112a3565b6108a891906112ba565b94506108b48684611290565b6033556108d46108c48683611290565b6103e86033546104fe919061127d565b6108df888887610e93565b505050509392505050565b5f5f6103e86033546108fc919061127d565b90505f6103e861090a610c5a565b610914919061127d565b90508061056c83866112a3565b5f61051b82610535565b610933610998565b6001548019821981161461095a5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a18919061133e565b6001600160a01b0316336001600160a01b0316146105335760405163794821ff60e01b815260040160405180910390fd5b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610ae25760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610b4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b739190611359565b61053357604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610be2816001805460ff9092161b9081161490565b15610c005760405163840a48d560e01b815260040160405180910390fd5b50565b606454811115610c265760405163052b07b760e21b815260040160405180910390fd5b606554610c31610c5a565b1115610c505760405163d86bae6760e01b815260040160405180910390fd5b6103a58282610ea7565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ca0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc49190611327565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610cfd84670de0b6b3a76400006112a3565b610d0791906112ba565b60405190815260200161074a565b5f54610100900460ff16610d7f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016105e8565b603280546001600160a01b0319166001600160a01b038316179055610da35f610b90565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e399190611378565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b03838116911614610e8e57604051630312abdd60e61b815260040160405180910390fd5b505050565b610e8e6001600160a01b0383168483610ed5565b6032546001600160a01b038381169116146103a557604051630312abdd60e61b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610e8e928692915f91610f64918516908490610fe3565b905080515f1480610f84575080806020019051810190610f849190611359565b610e8e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105e8565b606061057684845f85855f5f866001600160a01b031685876040516110089190611393565b5f6040518083038185875af1925050503d805f8114611042576040519150601f19603f3d011682016040523d82523d5f602084013e611047565b606091505b509150915061105887838387611063565b979650505050505050565b606083156110d15782515f036110ca576001600160a01b0385163b6110ca5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105e8565b5081610576565b61057683838151156110e65781518083602001fd5b8060405162461bcd60e51b81526004016105e891906111f6565b5f5f60408385031215611111575f5ffd5b50508035926020909101359150565b5f60208284031215611130575f5ffd5b5035919050565b6001600160a01b0381168114610c00575f5ffd5b5f5f6040838503121561115c575f5ffd5b823561116781611137565b946020939093013593505050565b5f60208284031215611185575f5ffd5b813561119081611137565b9392505050565b60ff81168114610c00575f5ffd5b5f602082840312156111b5575f5ffd5b813561119081611197565b5f5f5f606084860312156111d2575f5ffd5b833592506020840135915060408401356111eb81611137565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f6060848603121561123d575f5ffd5b833561124881611137565b9250602084013561125881611137565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561051b5761051b611269565b8181038181111561051b5761051b611269565b808202811582820484141761051b5761051b611269565b5f826112d457634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f60208284031215611337575f5ffd5b5051919050565b5f6020828403121561134e575f5ffd5b815161119081611137565b5f60208284031215611369575f5ffd5b81518015158114611190575f5ffd5b5f60208284031215611388575f5ffd5b815161119081611197565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220ae1d9fff01192c68d4c4deec71fa7bb8c3db871ba11af1cc47f425f8acc939eb64736f6c634300081e0033", + Bin: "0x60c060405234801561000f575f5ffd5b506040516115f73803806115f783398101604081905261002e9161014f565b8181806001600160a01b038116610058576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a05261007361007c565b50505050610187565b5f54610100900460ff16156100e75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610136575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014c575f5ffd5b50565b5f5f60408385031215610160575f5ffd5b825161016b81610138565b602084015190925061017c81610138565b809150509250929050565b60805160a05161142c6101cb5f395f81816101ce015281816103f50152818161077d01526107ff01525f81816102960152818161099a0152610b02015261142c5ff3fe608060405234801561000f575f5ffd5b506004361061016d575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc11461033f578063e3dae51c1461035a578063f3e738751461036d578063fabc1cbc14610380575f5ffd5b8063c4d66de814610306578063ce7c2ac214610319578063d9caed121461032c575f5ffd5b80637a8b26371461027e578063886f1195146102915780638c871019146102b85780638f6a6240146102cb578063a6ab36f2146102de578063ab5921e1146102f1575f5ffd5b806347e7ef241161012a57806347e7ef2414610210578063553ca5f814610223578063595c6a67146102365780635ac86ab71461023e5780635c975abb1461026d57806361b01b5d14610275575f5ffd5b806311c70c9d14610171578063136439dd146101865780632495a5991461019957806339b70e38146101c95780633a98ef39146101f057806343fe08b014610207575b5f5ffd5b61018461017f366004611100565b610393565b005b610184610194366004611120565b6103a9565b6032546101ac906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101ac7f000000000000000000000000000000000000000000000000000000000000000081565b6101f960335481565b6040519081526020016101c0565b6101f960645481565b6101f961021e36600461114b565b6103df565b6101f9610231366004611175565b61050e565b610184610521565b61025d61024c3660046111a5565b6001805460ff9092161b9081161490565b60405190151581526020016101c0565b6001546101f9565b6101f960655481565b6101f961028c366004611120565b610535565b6101ac7f000000000000000000000000000000000000000000000000000000000000000081565b6101f96102c6366004611120565b61057e565b6101f96102d9366004611175565b610588565b6101846102ec3660046111c0565b610595565b6102f9610670565b6040516101c091906111f6565b610184610314366004611175565b610690565b6101f9610327366004611175565b610756565b6101f961033a36600461122b565b6107e8565b606454606554604080519283526020830191909152016101c0565b6101f9610368366004611120565b6108ea565b6101f961037b366004611120565b610921565b61018461038e366004611120565b61092b565b61039b610998565b6103a58282610a49565b5050565b6103b1610aed565b60015481811681146103d65760405163c61dca5d60e01b815260040160405180910390fd5b6103a582610b90565b5f5f6103ea81610bcd565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610433576040516348da714f60e01b815260040160405180910390fd5b61043d8484610c03565b6033545f61044d6103e88361127d565b90505f6103e861045b610c5a565b610465919061127d565b90505f6104728783611290565b90508061047f84896112a3565b61048991906112ba565b9550855f036104ab57604051630c392ed360e11b815260040160405180910390fd5b6104b5868561127d565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156104ea57604051632f14e8a360e11b815260040160405180910390fd5b610503826103e86033546104fe919061127d565b610cc9565b505050505092915050565b5f61051b61028c83610756565b92915050565b610529610aed565b6105335f19610b90565b565b5f5f6103e8603354610547919061127d565b90505f6103e8610555610c5a565b61055f919061127d565b90508161056c85836112a3565b61057691906112ba565b949350505050565b5f61051b826108ea565b5f61051b61037b83610756565b5f54610100900460ff16158080156105b357505f54600160ff909116105b806105cc5750303b1580156105cc57505f5460ff166001145b6105f15760405162461bcd60e51b81526004016105e8906112d9565b60405180910390fd5b5f805460ff191660011790558015610612575f805461ff0019166101001790555b61061c8484610a49565b61062582610d15565b801561066a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d81526020016113aa604d9139905090565b5f54610100900460ff16158080156106ae57505f54600160ff909116105b806106c75750303b1580156106c757505f5460ff166001145b6106e35760405162461bcd60e51b81526004016105e8906112d9565b5f805460ff191660011790558015610704575f805461ff0019166101001790555b61070d82610d15565b80156103a5575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa1580156107c4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051b9190611327565b5f60016107f481610bcd565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461083d576040516348da714f60e01b815260040160405180910390fd5b610848858585610e60565b6033548084111561086c57604051630b469df360e41b815260040160405180910390fd5b5f6108796103e88361127d565b90505f6103e8610887610c5a565b610891919061127d565b90508161089e87836112a3565b6108a891906112ba565b94506108b48684611290565b6033556108d46108c48683611290565b6103e86033546104fe919061127d565b6108df888887610e93565b505050509392505050565b5f5f6103e86033546108fc919061127d565b90505f6103e861090a610c5a565b610914919061127d565b90508061056c83866112a3565b5f61051b82610535565b610933610998565b6001548019821981161461095a5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a18919061133e565b6001600160a01b0316336001600160a01b0316146105335760405163794821ff60e01b815260040160405180910390fd5b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610ae25760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610b4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b739190611359565b61053357604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610be2816001805460ff9092161b9081161490565b15610c005760405163840a48d560e01b815260040160405180910390fd5b50565b606454811115610c265760405163052b07b760e21b815260040160405180910390fd5b606554610c31610c5a565b1115610c505760405163d86bae6760e01b815260040160405180910390fd5b6103a58282610ea7565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ca0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc49190611327565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610cfd84670de0b6b3a76400006112a3565b610d0791906112ba565b60405190815260200161074a565b5f54610100900460ff16610d7f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016105e8565b603280546001600160a01b0319166001600160a01b038316179055610da35f610b90565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e399190611378565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b03838116911614610e8e57604051630312abdd60e61b815260040160405180910390fd5b505050565b610e8e6001600160a01b0383168483610ed5565b6032546001600160a01b038381169116146103a557604051630312abdd60e61b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610e8e928692915f91610f64918516908490610fe3565b905080515f1480610f84575080806020019051810190610f849190611359565b610e8e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105e8565b606061057684845f85855f5f866001600160a01b031685876040516110089190611393565b5f6040518083038185875af1925050503d805f8114611042576040519150601f19603f3d011682016040523d82523d5f602084013e611047565b606091505b509150915061105887838387611063565b979650505050505050565b606083156110d15782515f036110ca576001600160a01b0385163b6110ca5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105e8565b5081610576565b61057683838151156110e65781518083602001fd5b8060405162461bcd60e51b81526004016105e891906111f6565b5f5f60408385031215611111575f5ffd5b50508035926020909101359150565b5f60208284031215611130575f5ffd5b5035919050565b6001600160a01b0381168114610c00575f5ffd5b5f5f6040838503121561115c575f5ffd5b823561116781611137565b946020939093013593505050565b5f60208284031215611185575f5ffd5b813561119081611137565b9392505050565b60ff81168114610c00575f5ffd5b5f602082840312156111b5575f5ffd5b813561119081611197565b5f5f5f606084860312156111d2575f5ffd5b833592506020840135915060408401356111eb81611137565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f6060848603121561123d575f5ffd5b833561124881611137565b9250602084013561125881611137565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561051b5761051b611269565b8181038181111561051b5761051b611269565b808202811582820484141761051b5761051b611269565b5f826112d457634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f60208284031215611337575f5ffd5b5051919050565b5f6020828403121561134e575f5ffd5b815161119081611137565b5f60208284031215611369575f5ffd5b81518015158114611190575f5ffd5b5f60208284031215611388575f5ffd5b815161119081611197565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212204bceb7d2d7b1fc606710564317cd99f1b7efc3ef07c2c238ba767d013f12ba7564736f6c634300081e0033", } // StrategyBaseTVLLimitsABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/StrategyFactory/binding.go b/pkg/bindings/StrategyFactory/binding.go index 3d186b2b15..2f0ab252e4 100644 --- a/pkg/bindings/StrategyFactory/binding.go +++ b/pkg/bindings/StrategyFactory/binding.go @@ -32,7 +32,7 @@ var ( // StrategyFactoryMetaData contains all meta data concerning the StrategyFactory contract. var StrategyFactoryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"blacklistTokens\",\"inputs\":[{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployNewStrategy\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"newStrategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployedStrategies\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_strategyBeacon\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isBlacklisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"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\":\"removeStrategiesFromWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"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\":\"whitelistStrategies\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"StrategyBeaconModified\",\"inputs\":[{\"name\":\"previousBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"},{\"name\":\"newBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategySetForToken\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenBlacklisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"}],\"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\":\"error\",\"name\":\"AlreadyBlacklisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BlacklistedToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyExists\",\"inputs\":[]}]", - Bin: "0x60c060405234801561000f575f5ffd5b506040516118d83803806118d883398101604081905261002e9161014e565b806001600160a01b038116610056576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a052610071610078565b5050610186565b603354610100900460ff16156100e45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60335460ff90811614610135576033805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014b575f5ffd5b50565b5f5f6040838503121561015f575f5ffd5b825161016a81610137565b602084015190925061017b81610137565b809150509250929050565b60805160a0516117076101d15f395f81816101420152818161053a01528181610714015281816107b10152610a4901525f818161021501528181610a950152610d0901526117075ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c8063886f11951161009e578063f0062d9a1161006e578063f0062d9a1461026e578063f2fde38b14610280578063fabc1cbc14610293578063fe38b32d146102a6578063fe575a87146102b9575f5ffd5b8063886f1195146102105780638da5cb5b14610237578063b768ebc914610248578063c350a1b51461025b575f5ffd5b8063595c6a67116100e4578063595c6a67146101a95780635ac86ab7146101b15780635c975abb146101e45780636b9b6229146101f5578063715018a614610208575f5ffd5b8063136439dd1461011557806323103c411461012a57806339b70e381461013d578063581dfd6514610181575b5f5ffd5b610128610123366004610dc5565b6102db565b005b610128610138366004610e24565b610315565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61016461018f366004610e77565b60016020525f90815260409020546001600160a01b031681565b6101286105a3565b6101d46101bf366004610e99565b609954600160ff9092169190911b9081161490565b6040519015158152602001610178565b609954604051908152602001610178565b610164610203366004610e77565b6105b7565b610128610781565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6066546001600160a01b0316610164565b610128610256366004610e24565b610792565b610128610269366004610eb9565b610819565b5f54610164906001600160a01b031681565b61012861028e366004610e77565b610944565b6101286102a1366004610dc5565b6109bd565b6101286102b4366004610e24565b610a2a565b6101d46102c7366004610e77565b60026020525f908152604090205460ff1681565b6102e3610a80565b60995481811681146103085760405163c61dca5d60e01b815260040160405180910390fd5b61031182610b23565b5050565b61031d610b60565b5f8167ffffffffffffffff81111561033757610337610ef8565b604051908082528060200260200182016040528015610360578160200160208202803683370190505b5090505f805b838110156105195760025f86868481811061038357610383610f0c565b90506020020160208101906103989190610e77565b6001600160a01b0316815260208101919091526040015f205460ff16156103d25760405163f53de75f60e01b815260040160405180910390fd5b600160025f8787858181106103e9576103e9610f0c565b90506020020160208101906103fe9190610e77565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f75519c51f39873ec0e27dd3bbc09549e4865a113f505393fb9eab5898f6418b385858381811061045857610458610f0c565b905060200201602081019061046d9190610e77565b6040516001600160a01b03909116815260200160405180910390a15f60015f87878581811061049e5761049e610f0c565b90506020020160208101906104b39190610e77565b6001600160a01b03908116825260208201929092526040015f2054169050801561051057808484815181106104ea576104ea610f0c565b6001600160a01b03909216602092830291909101909101528261050c81610f20565b9350505b50600101610366565b50808252801561059d576040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b89061056f908590600401610f44565b5f604051808303815f87803b158015610586575f5ffd5b505af1158015610598573d5f5f3e3d5ffd5b505050505b50505050565b6105ab610a80565b6105b55f19610b23565b565b5f5f6105c281610bba565b6001600160a01b0383165f9081526002602052604090205460ff16156105fb5760405163091867bd60e11b815260040160405180910390fd5b6001600160a01b038381165f9081526001602052604090205416156106335760405163c45546f760e01b815260040160405180910390fd5b5f8054604080516001600160a01b0387811660248084019190915283518084039091018152604490920183526020820180516001600160e01b031663189acdbd60e31b179052915191909216919061068a90610db8565b610695929190610f8f565b604051809103905ff0801580156106ae573d5f5f3e3d5ffd5b5090506106bb8482610be5565b6040805160018082528183019092525f916020808301908036833701905050905081815f815181106106ef576106ef610f0c565b6001600160a01b039283166020918202929092010152604051632ef047f960e11b81527f000000000000000000000000000000000000000000000000000000000000000090911690635de08ff29061074b908490600401610f44565b5f604051808303815f87803b158015610762575f5ffd5b505af1158015610774573d5f5f3e3d5ffd5b5093979650505050505050565b610789610b60565b6105b55f610c4f565b61079a610b60565b604051632ef047f960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635de08ff2906107e89085908590600401610fd3565b5f604051808303815f87803b1580156107ff575f5ffd5b505af1158015610811573d5f5f3e3d5ffd5b505050505050565b603354610100900460ff16158080156108395750603354600160ff909116105b806108535750303b158015610853575060335460ff166001145b6108bb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6033805460ff1916600117905580156108de576033805461ff0019166101001790555b6108e784610c4f565b6108f083610b23565b6108f982610ca0565b801561059d576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b61094c610b60565b6001600160a01b0381166109b15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b2565b6109ba81610c4f565b50565b6109c5610d07565b609954801982198116146109ec5760405163c61dca5d60e01b815260040160405180910390fd5b609982905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b610a32610b60565b6040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b8906107e89085908590600401610fd3565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ae2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b06919061101f565b6105b557604051631d77d47760e21b815260040160405180910390fd5b609981905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6066546001600160a01b031633146105b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b2565b609954600160ff83161b908116036109ba5760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038281165f8181526001602090815260409182902080546001600160a01b031916948616948517905581519283528201929092527f6852a55230ef089d785bce7ffbf757985de34026df90a87d7b4a6e56f95d251f910160405180910390a15050565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54604080516001600160a01b03928316815291831660208301527fe21755962a7d7e100b59b9c3e4d4b54085b146313719955efb6a7a25c5c7feee910160405180910390a15f80546001600160a01b0319166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d63573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d87919061103e565b6001600160a01b0316336001600160a01b0316146105b55760405163794821ff60e01b815260040160405180910390fd5b6106788061105a83390190565b5f60208284031215610dd5575f5ffd5b5035919050565b5f5f83601f840112610dec575f5ffd5b50813567ffffffffffffffff811115610e03575f5ffd5b6020830191508360208260051b8501011115610e1d575f5ffd5b9250929050565b5f5f60208385031215610e35575f5ffd5b823567ffffffffffffffff811115610e4b575f5ffd5b610e5785828601610ddc565b90969095509350505050565b6001600160a01b03811681146109ba575f5ffd5b5f60208284031215610e87575f5ffd5b8135610e9281610e63565b9392505050565b5f60208284031215610ea9575f5ffd5b813560ff81168114610e92575f5ffd5b5f5f5f60608486031215610ecb575f5ffd5b8335610ed681610e63565b9250602084013591506040840135610eed81610e63565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60018201610f3d57634e487b7160e01b5f52601160045260245ffd5b5060010190565b602080825282518282018190525f918401906040840190835b81811015610f845783516001600160a01b0316835260209384019390920191600101610f5d565b509095945050505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b602080825281018290525f8360408301825b85811015611015578235610ff881610e63565b6001600160a01b0316825260209283019290910190600101610fe5565b5095945050505050565b5f6020828403121561102f575f5ffd5b81518015158114610e92575f5ffd5b5f6020828403121561104e575f5ffd5b8151610e9281610e6356fe6080604052604051610678380380610678833981016040819052610022916103ed565b61002d82825f610034565b5050610513565b61003d836100f1565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a25f8251118061007c5750805b156100ec576100ea836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906104af565b83610273565b505b505050565b6001600160a01b0381163b61015b5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101cd816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101be91906104af565b6001600160a01b03163b151590565b6102325760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610152565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029883836040518060600160405280602781526020016106516027913961029f565b9392505050565b60605f5f856001600160a01b0316856040516102bb91906104c8565b5f60405180830381855af49150503d805f81146102f3576040519150601f19603f3d011682016040523d82523d5f602084013e6102f8565b606091505b50909250905061030a86838387610314565b9695505050505050565b606083156103825782515f0361037b576001600160a01b0385163b61037b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610152565b508161038c565b61038c8383610394565b949350505050565b8151156103a45781518083602001fd5b8060405162461bcd60e51b815260040161015291906104de565b80516001600160a01b03811681146103d4575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156103fe575f5ffd5b610407836103be565b60208401519092506001600160401b03811115610422575f5ffd5b8301601f81018513610432575f5ffd5b80516001600160401b0381111561044b5761044b6103d9565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610479576104796103d9565b604052818152828201602001871015610490575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f602082840312156104bf575f5ffd5b610298826103be565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610131806105205f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b60b3565b565b5f60527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015608c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019060ae919060d0565b905090565b365f5f375f5f365f845af43d5f5f3e80801560cc573d5ff35b3d5ffd5b5f6020828403121560df575f5ffd5b81516001600160a01b038116811460f4575f5ffd5b939250505056fea26469706673582212207b94aecb5f7696f142cc1acc4dea07c18e8f9d41766baf4a3c001a89adb8a8a764736f6c634300081e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ce9dc1fac5375f982ed194946399ed16cb202d3a3293fd3bdf3a72b2e537b97a64736f6c634300081e0033", + Bin: "0x60c060405234801561000f575f5ffd5b506040516118d83803806118d883398101604081905261002e9161014e565b806001600160a01b038116610056576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a052610071610078565b5050610186565b603354610100900460ff16156100e45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60335460ff90811614610135576033805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014b575f5ffd5b50565b5f5f6040838503121561015f575f5ffd5b825161016a81610137565b602084015190925061017b81610137565b809150509250929050565b60805160a0516117076101d15f395f81816101420152818161053a01528181610714015281816107b10152610a4901525f818161021501528181610a950152610d0901526117075ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c8063886f11951161009e578063f0062d9a1161006e578063f0062d9a1461026e578063f2fde38b14610280578063fabc1cbc14610293578063fe38b32d146102a6578063fe575a87146102b9575f5ffd5b8063886f1195146102105780638da5cb5b14610237578063b768ebc914610248578063c350a1b51461025b575f5ffd5b8063595c6a67116100e4578063595c6a67146101a95780635ac86ab7146101b15780635c975abb146101e45780636b9b6229146101f5578063715018a614610208575f5ffd5b8063136439dd1461011557806323103c411461012a57806339b70e381461013d578063581dfd6514610181575b5f5ffd5b610128610123366004610dc5565b6102db565b005b610128610138366004610e24565b610315565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61016461018f366004610e77565b60016020525f90815260409020546001600160a01b031681565b6101286105a3565b6101d46101bf366004610e99565b609954600160ff9092169190911b9081161490565b6040519015158152602001610178565b609954604051908152602001610178565b610164610203366004610e77565b6105b7565b610128610781565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6066546001600160a01b0316610164565b610128610256366004610e24565b610792565b610128610269366004610eb9565b610819565b5f54610164906001600160a01b031681565b61012861028e366004610e77565b610944565b6101286102a1366004610dc5565b6109bd565b6101286102b4366004610e24565b610a2a565b6101d46102c7366004610e77565b60026020525f908152604090205460ff1681565b6102e3610a80565b60995481811681146103085760405163c61dca5d60e01b815260040160405180910390fd5b61031182610b23565b5050565b61031d610b60565b5f8167ffffffffffffffff81111561033757610337610ef8565b604051908082528060200260200182016040528015610360578160200160208202803683370190505b5090505f805b838110156105195760025f86868481811061038357610383610f0c565b90506020020160208101906103989190610e77565b6001600160a01b0316815260208101919091526040015f205460ff16156103d25760405163f53de75f60e01b815260040160405180910390fd5b600160025f8787858181106103e9576103e9610f0c565b90506020020160208101906103fe9190610e77565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f75519c51f39873ec0e27dd3bbc09549e4865a113f505393fb9eab5898f6418b385858381811061045857610458610f0c565b905060200201602081019061046d9190610e77565b6040516001600160a01b03909116815260200160405180910390a15f60015f87878581811061049e5761049e610f0c565b90506020020160208101906104b39190610e77565b6001600160a01b03908116825260208201929092526040015f2054169050801561051057808484815181106104ea576104ea610f0c565b6001600160a01b03909216602092830291909101909101528261050c81610f20565b9350505b50600101610366565b50808252801561059d576040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b89061056f908590600401610f44565b5f604051808303815f87803b158015610586575f5ffd5b505af1158015610598573d5f5f3e3d5ffd5b505050505b50505050565b6105ab610a80565b6105b55f19610b23565b565b5f5f6105c281610bba565b6001600160a01b0383165f9081526002602052604090205460ff16156105fb5760405163091867bd60e11b815260040160405180910390fd5b6001600160a01b038381165f9081526001602052604090205416156106335760405163c45546f760e01b815260040160405180910390fd5b5f8054604080516001600160a01b0387811660248084019190915283518084039091018152604490920183526020820180516001600160e01b031663189acdbd60e31b179052915191909216919061068a90610db8565b610695929190610f8f565b604051809103905ff0801580156106ae573d5f5f3e3d5ffd5b5090506106bb8482610be5565b6040805160018082528183019092525f916020808301908036833701905050905081815f815181106106ef576106ef610f0c565b6001600160a01b039283166020918202929092010152604051632ef047f960e11b81527f000000000000000000000000000000000000000000000000000000000000000090911690635de08ff29061074b908490600401610f44565b5f604051808303815f87803b158015610762575f5ffd5b505af1158015610774573d5f5f3e3d5ffd5b5093979650505050505050565b610789610b60565b6105b55f610c4f565b61079a610b60565b604051632ef047f960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635de08ff2906107e89085908590600401610fd3565b5f604051808303815f87803b1580156107ff575f5ffd5b505af1158015610811573d5f5f3e3d5ffd5b505050505050565b603354610100900460ff16158080156108395750603354600160ff909116105b806108535750303b158015610853575060335460ff166001145b6108bb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6033805460ff1916600117905580156108de576033805461ff0019166101001790555b6108e784610c4f565b6108f083610b23565b6108f982610ca0565b801561059d576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b61094c610b60565b6001600160a01b0381166109b15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b2565b6109ba81610c4f565b50565b6109c5610d07565b609954801982198116146109ec5760405163c61dca5d60e01b815260040160405180910390fd5b609982905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b610a32610b60565b6040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b8906107e89085908590600401610fd3565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ae2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b06919061101f565b6105b557604051631d77d47760e21b815260040160405180910390fd5b609981905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6066546001600160a01b031633146105b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b2565b609954600160ff83161b908116036109ba5760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038281165f8181526001602090815260409182902080546001600160a01b031916948616948517905581519283528201929092527f6852a55230ef089d785bce7ffbf757985de34026df90a87d7b4a6e56f95d251f910160405180910390a15050565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54604080516001600160a01b03928316815291831660208301527fe21755962a7d7e100b59b9c3e4d4b54085b146313719955efb6a7a25c5c7feee910160405180910390a15f80546001600160a01b0319166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d63573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d87919061103e565b6001600160a01b0316336001600160a01b0316146105b55760405163794821ff60e01b815260040160405180910390fd5b6106788061105a83390190565b5f60208284031215610dd5575f5ffd5b5035919050565b5f5f83601f840112610dec575f5ffd5b50813567ffffffffffffffff811115610e03575f5ffd5b6020830191508360208260051b8501011115610e1d575f5ffd5b9250929050565b5f5f60208385031215610e35575f5ffd5b823567ffffffffffffffff811115610e4b575f5ffd5b610e5785828601610ddc565b90969095509350505050565b6001600160a01b03811681146109ba575f5ffd5b5f60208284031215610e87575f5ffd5b8135610e9281610e63565b9392505050565b5f60208284031215610ea9575f5ffd5b813560ff81168114610e92575f5ffd5b5f5f5f60608486031215610ecb575f5ffd5b8335610ed681610e63565b9250602084013591506040840135610eed81610e63565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60018201610f3d57634e487b7160e01b5f52601160045260245ffd5b5060010190565b602080825282518282018190525f918401906040840190835b81811015610f845783516001600160a01b0316835260209384019390920191600101610f5d565b509095945050505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b602080825281018290525f8360408301825b85811015611015578235610ff881610e63565b6001600160a01b0316825260209283019290910190600101610fe5565b5095945050505050565b5f6020828403121561102f575f5ffd5b81518015158114610e92575f5ffd5b5f6020828403121561104e575f5ffd5b8151610e9281610e6356fe6080604052604051610678380380610678833981016040819052610022916103ed565b61002d82825f610034565b5050610513565b61003d836100f1565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a25f8251118061007c5750805b156100ec576100ea836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906104af565b83610273565b505b505050565b6001600160a01b0381163b61015b5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101cd816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101be91906104af565b6001600160a01b03163b151590565b6102325760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610152565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029883836040518060600160405280602781526020016106516027913961029f565b9392505050565b60605f5f856001600160a01b0316856040516102bb91906104c8565b5f60405180830381855af49150503d805f81146102f3576040519150601f19603f3d011682016040523d82523d5f602084013e6102f8565b606091505b50909250905061030a86838387610314565b9695505050505050565b606083156103825782515f0361037b576001600160a01b0385163b61037b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610152565b508161038c565b61038c8383610394565b949350505050565b8151156103a45781518083602001fd5b8060405162461bcd60e51b815260040161015291906104de565b80516001600160a01b03811681146103d4575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156103fe575f5ffd5b610407836103be565b60208401519092506001600160401b03811115610422575f5ffd5b8301601f81018513610432575f5ffd5b80516001600160401b0381111561044b5761044b6103d9565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610479576104796103d9565b604052818152828201602001871015610490575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f602082840312156104bf575f5ffd5b610298826103be565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610131806105205f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b60b3565b565b5f60527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015608c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019060ae919060d0565b905090565b365f5f375f5f365f845af43d5f5f3e80801560cc573d5ff35b3d5ffd5b5f6020828403121560df575f5ffd5b81516001600160a01b038116811460f4575f5ffd5b939250505056fea26469706673582212207b94aecb5f7696f142cc1acc4dea07c18e8f9d41766baf4a3c001a89adb8a8a764736f6c634300081e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207047c8c0de18e13a98ca9f8e2128ab250c892bc6b94bc188477aefe7b92c797d64736f6c634300081e0033", } // StrategyFactoryABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/StrategyManager/binding.go b/pkg/bindings/StrategyManager/binding.go index ba91078e59..5cdf736135 100644 --- a/pkg/bindings/StrategyManager/binding.go +++ b/pkg/bindings/StrategyManager/binding.go @@ -38,7 +38,7 @@ type OperatorSet struct { // StrategyManagerMetaData contains all meta data concerning the StrategyManager contract. var StrategyManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_BURN_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateStrategyDepositDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clearBurnOrRedistributableShares\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearBurnOrRedistributableSharesByStrategy\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"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\":\"depositShares\",\"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\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBurnOrRedistributableCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBurnOrRedistributableShares\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBurnOrRedistributableShares\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"getPendingOperatorSets\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingSlashIds\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesWithBurnableShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnOrRedistributableShares\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"sharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"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\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategies\",\"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\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"whitelisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BurnOrRedistributableSharesDecreased\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnOrRedistributableSharesIncreased\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableSharesDecreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"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\":\"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\":\"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\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxStrategiesExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyWhitelister\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountTooHigh\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StakerAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]}]", - Bin: "0x610100604052348015610010575f5ffd5b506040516139d73803806139d783398101604081905261002f916101bc565b80808585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805291821660a0521660c05261007c81610093565b60e0525061008a90506100d9565b50505050610301565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd91906102a6565b60405180910390fd5b80516100d1826102db565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101cf575f5ffd5b84516101da81610191565b60208601519094506101eb81610191565b60408601519093506101fc81610191565b60608601519092506001600160401b03811115610217575f5ffd5b8501601f81018713610227575f5ffd5b80516001600160401b03811115610240576102406101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101a8565b604052818152828201602001891015610285575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102fb575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161365d61037a5f395f81816110a8015261247401525f81816105fa015281816108c101528181610da30152818161103a0152818161125501526120a901525f81816105a001528181610815015261141a01525f81816104b601528181611aaa01526124e3015261365d5ff3fe608060405234801561000f575f5ffd5b506004361061026b575f3560e01c80637ecebe001161014b578063ca8aa7c7116100bf578063f2fde38b11610084578063f2fde38b1461062f578063f3b4a00014610642578063f698da251461064c578063fabc1cbc14610654578063fd98042314610667578063fe243a171461067a575f5ffd5b8063ca8aa7c71461059b578063cbc2bd62146105c2578063de44acb6146105d5578063df5cf723146105f5578063e7a050aa1461061c575f5ffd5b80638da5cb5b116101105780638da5cb5b1461052b57806394f649dd1461053c578063967fc0d21461054f5780639ac01d6114610562578063b5d8b5b814610575578063c665670214610588575f5ffd5b80637ecebe001461047f578063829fca731461049e578063886f1195146104b157806388c10299146104f05780638b8aac3c14610503575f5ffd5b806350ff7225116101e25780635de08ff2116101a75780635de08ff2146103fc578063663c1de41461040f578063715018a614610431578063724af4231461043957806376fb162b1461044c5780637def15641461045f575f5ffd5b806350ff72251461037c57806354fd4d50146103a4578063595c6a67146103b95780635ac86ab7146103c15780635c975abb146103f4575f5ffd5b806332e89ace1161023357806332e89ace146102f157806336a8c500146103045780633f292b081461031a5780633fb99ca51461032f57806348825e94146103425780634b6d5d6e14610369575f5ffd5b8063136439dd1461026f5780631794bb3c146102845780632d44def6146102975780632eae418c146102bd57806331f8fb4c146102d0575b5f5ffd5b61028261027d366004612e33565b6106a4565b005b610282610292366004612e5e565b6106de565b6102aa6102a5366004612eb2565b610804565b6040519081526020015b60405180910390f35b6102826102cb366004612ef0565b6108b6565b6102e36102de366004612f3e565b610982565b6040516102b4929190612fda565b6102aa6102ff36600461304b565b610b10565b61030c610b95565b6040516102b4929190613125565b610322610cb0565b6040516102b4919061317b565b61028261033d3660046131d8565b610d98565b6102aa7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61028261037736600461321c565b610ee0565b61038f61038a366004612e5e565b61102d565b604080519283526020830191909152016102b4565b6103ac6110a1565b6040516102b49190613265565b6102826110d1565b6103e46103cf366004613277565b609854600160ff9092169190911b9081161490565b60405190151581526020016102b4565b6098546102aa565b61028261040a366004613297565b6110e5565b6103e461041d36600461321c565b60d16020525f908152604090205460ff1681565b610282611238565b6102aa610447366004612e5e565b611249565b6102aa61045a366004612eb2565b6112a6565b61047261046d366004613306565b6112f5565b6040516102b49190613320565b6102aa61048d36600461321c565b60ca6020525f908152604090205481565b6102aa6104ac366004612f3e565b611327565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102b4565b6104726104fe366004612f3e565b611361565b6102aa61051136600461321c565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166104d8565b6102e361054a36600461321c565b611498565b60cb546104d8906001600160a01b031681565b6102aa610570366004613332565b61160f565b610282610583366004613297565b6116a0565b61028261059636600461321c565b6117e7565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b6104d86105d0366004613393565b61180a565b6105e86105e336600461321c565b61183e565b6040516102b491906133bd565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b6102aa61062a366004612e5e565b6118b1565b61028261063d36600461321c565b6118e4565b6104d8620e16e481565b6102aa61195a565b610282610662366004612e33565b611a13565b6102aa61067536600461321c565b611a80565b6102aa6106883660046133cf565b60cd60209081525f928352604080842090915290825290205481565b6106ac611a95565b60985481811681146106d15760405163c61dca5d60e01b815260040160405180910390fd5b6106da82611b38565b5050565b5f54610100900460ff16158080156106fc57505f54600160ff909116105b806107155750303b15801561071557505f5460ff166001145b61077d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561079e575f805461ff0019166101001790555b6107a782611b38565b6107b084611b75565b6107b983611bc6565b80156107fe575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b5f61080d611c2f565b6108a38484847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630f3df50e896040518263ffffffff1660e01b815260040161085f919061344f565b602060405180830381865afa15801561087a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089e919061345d565b611c88565b90506108af6001606555565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ff5760405163f739589b60e01b815260040160405180910390fd5b610907611c2f565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061093790879086908690600401613478565b6020604051808303815f875af1158015610953573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610977919061349c565b506107fe6001606555565b6060805f60d7816109a061099b368990038901896134b3565b611e90565b81526020019081526020015f205f8581526020019081526020015f2090505f6109c882611ef3565b90505f81516001600160401b038111156109e4576109e4613007565b604051908082528060200260200182016040528015610a0d578160200160208202803683370190505b5090505f82516001600160401b03811115610a2a57610a2a613007565b604051908082528060200260200182016040528015610a53578160200160208202803683370190505b5090505f5b8351811015610b0057838181518110610a7357610a7361350f565b6020026020010151838281518110610a8d57610a8d61350f565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad9848281518110610ac257610ac261350f565b602002602001015186611eff90919063ffffffff16565b9050828281518110610aed57610aed61350f565b6020908102919091010152600101610a58565b50909450925050505b9250929050565b5f5f610b1b81611f23565b610b23611c2f565b6001600160a01b0385165f90815260ca6020526040902054610b5486610b4d818c8c8c878c61160f565b8688611f4e565b6001600160a01b0386165f90815260ca60205260409020600182019055610b7d868a8a8a611fa0565b925050610b8a6001606555565b509695505050505050565b6060805f610ba360d461210d565b90505f816001600160401b03811115610bbe57610bbe613007565b604051908082528060200260200182016040528015610be7578160200160208202803683370190505b5090505f826001600160401b03811115610c0357610c03613007565b604051908082528060200260200182016040528015610c2c578160200160208202803683370190505b5090505f5b83811015610ca5575f5f610c4660d484612117565b9150915081858481518110610c5d57610c5d61350f565b60200260200101906001600160a01b031690816001600160a01b03168152505080848481518110610c9057610c9061350f565b60209081029190910101525050600101610c31565b509094909350915050565b60605f610cbd60d8612125565b90505f816001600160401b03811115610cd857610cd8613007565b604051908082528060200260200182016040528015610d1c57816020015b604080518082019091525f8082526020820152815260200190600190039081610cf65790505b5090505f5b82811015610d9157610d6c610d3760d88361212e565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610d7e57610d7e61350f565b6020908102919091010152600101610d21565b5092915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610de15760405163f739589b60e01b815260040160405180910390fd5b610de9611c2f565b5f60d781610dff61099b368990038901896134b3565b815260208082019290925260409081015f90812087825290925290209050610e28818484612139565b610e455760405163ca354fa360e01b815260040160405180910390fd5b610e62610e5a61099b368890038801886134b3565b60d89061214e565b50610e978460da5f610e7c61099b368b90038b018b6134b3565b81526020019081526020015f2061214e90919063ffffffff16565b507f5f5209798bbac45a16d2dc3bc67319fab26ee00153916d6f07b69f8a134a1e8b85858585604051610ecd9493929190613523565b60405180910390a1506107fe6001606555565b610ee8611c2f565b5f610ef460d483611eff565b915050610f0260d483612159565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a1801561101f57816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbe919061345d565b846040518463ffffffff1660e01b8152600401610fdd93929190613478565b6020604051808303815f875af1158015610ff9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101d919061349c565b505b5061102a6001606555565b50565b5f80336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110785760405163f739589b60e01b815260040160405180910390fd5b611080611c2f565b61108b85858561216d565b915091506110996001606555565b935093915050565b60606110cc7f00000000000000000000000000000000000000000000000000000000000000006122d5565b905090565b6110d9611a95565b6110e35f19611b38565b565b60cb546001600160a01b03163314611110576040516320ba3ff960e21b815260040160405180910390fd5b611118611c2f565b805f5b8181101561122c5760d15f8585848181106111385761113861350f565b905060200201602081019061114d919061321c565b6001600160a01b0316815260208101919091526040015f205460ff1661122457600160d15f8686858181106111845761118461350f565b9050602002016020810190611199919061321c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8484838181106111f3576111f361350f565b9050602002016020810190611208919061321c565b6040516001600160a01b03909116815260200160405180910390a15b60010161111b565b50506106da6001606555565b611240612312565b6110e35f611b75565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112935760405163f739589b60e01b815260040160405180910390fd5b61129b611c2f565b6108a384848461236c565b5f806112eb8360d7836112c161099b368b90038b018b6134b3565b81526020019081526020015f205f8781526020019081526020015f20611eff90919063ffffffff16565b9695505050505050565b606061132160da5f61130f61099b368790038701876134b3565b81526020019081526020015f2061241a565b92915050565b5f6108af60d78261134061099b368890038801886134b3565b81526020019081526020015f205f8481526020019081526020015f2061210d565b606061136b611c2f565b5f6113a560d78261138461099b368990038901896134b3565b81526020019081526020015f205f8581526020019081526020015f20611ef3565b80519091505f816001600160401b038111156113c3576113c3613007565b6040519080825280602002602001820160405280156113ec578160200160208202803683370190505b5090505f5b828110156114895761146487878684815181106114105761141061350f565b60200260200101517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630f3df50e8c6040518263ffffffff1660e01b815260040161085f919061344f565b8282815181106114765761147661350f565b60209081029190910101526001016113f1565b50925050506113216001606555565b6001600160a01b0381165f90815260ce6020526040812054606091829190816001600160401b038111156114ce576114ce613007565b6040519080825280602002602001820160405280156114f7578160200160208202803683370190505b5090505f5b82811015611585576001600160a01b0386165f90815260cd6020908152604080832060ce909252822080549192918490811061153a5761153a61350f565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205482518390839081106115725761157261350f565b60209081029190910101526001016114fc565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f2081818054806020026020016040519081016040528092919081815260200182805480156115fd57602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116115df575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611695906101000160405160208183030381529060405280519060200120612426565b979650505050505050565b60cb546001600160a01b031633146116cb576040516320ba3ff960e21b815260040160405180910390fd5b6116d3611c2f565b805f5b8181101561122c5760d15f8585848181106116f3576116f361350f565b9050602002016020810190611708919061321c565b6001600160a01b0316815260208101919091526040015f205460ff16156117df575f60d15f86868581811061173f5761173f61350f565b9050602002016020810190611754919061321c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba0308484838181106117ae576117ae61350f565b90506020020160208101906117c3919061321c565b6040516001600160a01b03909116815260200160405180910390a15b6001016116d6565b6117ef612312565b6117f7611c2f565b61180081611bc6565b61102a6001606555565b60ce602052815f5260405f208181548110611823575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce60209081526040918290208054835181840281018401909452808452606093928301828280156118a557602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611887575b50505050509050919050565b5f5f6118bc81611f23565b6118c4611c2f565b6118d033868686611fa0565b91506118dc6001606555565b509392505050565b6118ec612312565b6001600160a01b0381166119515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610774565b61102a81611b75565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea6119c761246c565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b611a1b6124e1565b60985480198219811614611a425760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f611a8d60d484611eff565b949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611af7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1b9190613555565b6110e357604051631d77d47760e21b815260040160405180910390fd5b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b600260655403611c815760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610774565b6002606555565b5f8060d781611c9f61099b368a90038a018a6134b3565b815260208082019290925260409081015f90812088825290925281209150611cc78286611eff565b9150611cd590508286612159565b505f8115611dec57856001600160a01b031663d9caed1286886001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d4d919061345d565b856040518463ffffffff1660e01b8152600401611d6c93929190613478565b6020604051808303815f875af1158015611d88573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dac919061349c565b90507fe6413aa0c789e437b0a06bf64b20926584f066c79a2d8b80a759c85472f7b0af88888885604051611de39493929190613523565b60405180910390a15b5f611df684611ef3565b519050805f03611e8457611e348860da5f611e1961099b368f90038f018f6134b3565b81526020019081526020015f2061259290919063ffffffff16565b50611e5f60da5f611e4d61099b368e90038e018e6134b3565b81526020019081526020015f20612125565b5f03611e8457611e82611e7a61099b368c90038c018c6134b3565b60d890612592565b505b50979650505050505050565b5f815f0151826020015163ffffffff16604051602001611edb92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261132190613574565b60605f6108af8361259d565b5f808080611f16866001600160a01b0387166125a8565b9097909650945050505050565b609854600160ff83161b9081160361102a5760405163840a48d560e01b815260040160405180910390fd5b42811015611f6f57604051630819bdcd60e01b815260040160405180910390fd5b611f836001600160a01b03851684846125e0565b6107fe57604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff16611fda57604051632efd965160e11b815260040160405180910390fd5b611fef6001600160a01b038516338786612634565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561203b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061205f919061349c565b91505f5f61206e88888661216d565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156120ec575f5ffd5b505af11580156120fe573d5f5f3e3d5ffd5b50505050505050949350505050565b5f6113218261268c565b5f808080611f168686612696565b5f611321825490565b5f6108af83836126bf565b5f611a8d846001600160a01b038516846126e5565b5f6108af8383612701565b5f6108af836001600160a01b03841661274d565b5f806001600160a01b038516612196576040516316f2ccc960e01b815260040160405180910390fd5b825f036121b6576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052908120549081900361225c576001600160a01b0386165f90815260ce60209081526040909120541061221e576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b61226684826135ab565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62906122c290889088908890613478565b60405180910390a1959294509192505050565b60605f6122e183612769565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146110e35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610774565b5f815f0361238d576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038085165f90815260cd6020908152604080832093871683529290522054808311156123d357604051634b18b19360e01b815260040160405180910390fd5b6123dd83826135be565b6001600160a01b038087165f90815260cd602090815260408083209389168352929052908120829055909150819003611a8d57611a8d8585612790565b60605f6108af8361290e565b5f61242f61195a565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f6124987f00000000000000000000000000000000000000000000000000000000000000006122d5565b9050805f815181106124ac576124ac61350f565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561253d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612561919061345d565b6001600160a01b0316336001600160a01b0316146110e35760405163794821ff60e01b815260040160405180910390fd5b5f6108af8383612966565b60606113218261241a565b5f8181526002830160205260408120548190806125d5576125c98585612a49565b92505f9150610b099050565b600192509050610b09565b5f5f5f6125ed8585612a54565b90925090505f816004811115612605576126056135d1565b1480156126235750856001600160a01b0316826001600160a01b0316145b806112eb57506112eb868686612a93565b6107fe846323b872dd60e01b85858560405160240161265593929190613478565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612b7a565b5f61132182612125565b5f80806126a3858561212e565b5f81815260029690960160205260409095205494959350505050565b5f825f0182815481106126d4576126d461350f565b905f5260205f200154905092915050565b5f8281526002840160205260408120829055611a8d848461214e565b5f81815260018301602052604081205461274657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611321565b505f611321565b5f81815260028301602052604081208190556108af8383612592565b5f60ff8216601f81111561132157604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b818110156128a2576001600160a01b038481165f90815260ce60205260409020805491851691839081106127e0576127e061350f565b5f918252602090912001546001600160a01b03160361289a576001600160a01b0384165f90815260ce60205260409020805461281e906001906135be565b8154811061282e5761282e61350f565b5f9182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061286a5761286a61350f565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506128a2565b6001016127aa565b8181036128c257604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce602052604090208054806128e8576128e86135e5565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b6060815f018054806020026020016040519081016040528092919081815260200182805480156118a557602002820191905f5260205f20905b8154815260200190600101908083116129475750505050509050919050565b5f8181526001830160205260408120548015612a40575f6129886001836135be565b85549091505f9061299b906001906135be565b90508181146129fa575f865f0182815481106129b9576129b961350f565b905f5260205f200154905080875f0184815481106129d9576129d961350f565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080612a0b57612a0b6135e5565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611321565b5f915050611321565b5f6108af8383612c52565b5f5f8251604103612a88576020830151604084015160608501515f1a612a7c87828585612c69565b94509450505050610b09565b505f90506002610b09565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401612abb9291906135f9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612af99190613611565b5f60405180830381855afa9150503d805f8114612b31576040519150601f19603f3d011682016040523d82523d5f602084013e612b36565b606091505b5091509150818015612b4a57506020815110155b80156112eb57508051630b135d3f60e11b90612b6f908301602090810190840161349c565b149695505050505050565b5f612bce826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612d269092919063ffffffff16565b905080515f1480612bee575080806020019051810190612bee9190613555565b612c4d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610774565b505050565b5f81815260018301602052604081205415156108af565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612c9e57505f90506003612d1d565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612cef573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612d17575f60019250925050612d1d565b91505f90505b94509492505050565b6060611a8d84845f85855f5f866001600160a01b03168587604051612d4b9190613611565b5f6040518083038185875af1925050503d805f8114612d85576040519150601f19603f3d011682016040523d82523d5f602084013e612d8a565b606091505b50915091506116958783838760608315612e045782515f03612dfd576001600160a01b0385163b612dfd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610774565b5081611a8d565b611a8d8383815115612e195781518083602001fd5b8060405162461bcd60e51b81526004016107749190613265565b5f60208284031215612e43575f5ffd5b5035919050565b6001600160a01b038116811461102a575f5ffd5b5f5f5f60608486031215612e70575f5ffd5b8335612e7b81612e4a565b92506020840135612e8b81612e4a565b929592945050506040919091013590565b5f60408284031215612eac575f5ffd5b50919050565b5f5f5f60808486031215612ec4575f5ffd5b612ece8585612e9c565b9250604084013591506060840135612ee581612e4a565b809150509250925092565b5f5f5f5f60808587031215612f03575f5ffd5b8435612f0e81612e4a565b93506020850135612f1e81612e4a565b92506040850135612f2e81612e4a565b9396929550929360600135925050565b5f5f60608385031215612f4f575f5ffd5b612f598484612e9c565b946040939093013593505050565b5f8151808452602084019350602083015f5b82811015612fa05781516001600160a01b0316865260209586019590910190600101612f79565b5093949350505050565b5f8151808452602084019350602083015f5b82811015612fa0578151865260209586019590910190600101612fbc565b604081525f612fec6040830185612f67565b8281036020840152612ffe8185612faa565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561304357613043613007565b604052919050565b5f5f5f5f5f5f60c08789031215613060575f5ffd5b863561306b81612e4a565b9550602087013561307b81612e4a565b945060408701359350606087013561309281612e4a565b92506080870135915060a08701356001600160401b038111156130b3575f5ffd5b8701601f810189136130c3575f5ffd5b80356001600160401b038111156130dc576130dc613007565b6130ef601f8201601f191660200161301b565b8181528a6020838501011115613103575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b604080825283519082018190525f9060208501906060840190835b818110156131675783516001600160a01b0316835260209384019390920191600101613140565b505083810360208501526112eb8186612faa565b602080825282518282018190525f918401906040840190835b818110156131cd57835180516001600160a01b0316845260209081015163ffffffff168185015290930192604090920191600101613194565b509095945050505050565b5f5f5f5f60a085870312156131eb575f5ffd5b6131f58686612e9c565b935060408501359250606085013561320c81612e4a565b9396929550929360800135925050565b5f6020828403121561322c575f5ffd5b81356108af81612e4a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108af6020830184613237565b5f60208284031215613287575f5ffd5b813560ff811681146108af575f5ffd5b5f5f602083850312156132a8575f5ffd5b82356001600160401b038111156132bd575f5ffd5b8301601f810185136132cd575f5ffd5b80356001600160401b038111156132e2575f5ffd5b8560208260051b84010111156132f6575f5ffd5b6020919091019590945092505050565b5f60408284031215613316575f5ffd5b6108af8383612e9c565b602081525f6108af6020830184612faa565b5f5f5f5f5f5f60c08789031215613347575f5ffd5b863561335281612e4a565b9550602087013561336281612e4a565b9450604087013561337281612e4a565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156133a4575f5ffd5b82356133af81612e4a565b946020939093013593505050565b602081525f6108af6020830184612f67565b5f5f604083850312156133e0575f5ffd5b82356133eb81612e4a565b915060208301356133fb81612e4a565b809150509250929050565b803563ffffffff81168114613419575f5ffd5b919050565b803561342981612e4a565b6001600160a01b0316825263ffffffff61344560208301613406565b1660208301525050565b60408101611321828461341e565b5f6020828403121561346d575f5ffd5b81516108af81612e4a565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f602082840312156134ac575f5ffd5b5051919050565b5f60408284031280156134c4575f5ffd5b50604080519081016001600160401b03811182821017156134e7576134e7613007565b60405282356134f581612e4a565b815261350360208401613406565b60208201529392505050565b634e487b7160e01b5f52603260045260245ffd5b60a08101613531828761341e565b60408201949094526001600160a01b03929092166060830152608090910152919050565b5f60208284031215613565575f5ffd5b815180151581146108af575f5ffd5b80516020808301519190811015612eac575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561132157611321613597565b8181038181111561132157611321613597565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a8d6040830184613237565b5f82518060208501845e5f92019182525091905056fea26469706673582212204584453a2dba66f38a9e0ffcef4769c1e8682395bab6ca38bdc09c31c531bc9964736f6c634300081e0033", + Bin: "0x610100604052348015610010575f5ffd5b506040516139d73803806139d783398101604081905261002f916101bc565b80808585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805291821660a0521660c05261007c81610093565b60e0525061008a90506100d9565b50505050610301565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd91906102a6565b60405180910390fd5b80516100d1826102db565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101cf575f5ffd5b84516101da81610191565b60208601519094506101eb81610191565b60408601519093506101fc81610191565b60608601519092506001600160401b03811115610217575f5ffd5b8501601f81018713610227575f5ffd5b80516001600160401b03811115610240576102406101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101a8565b604052818152828201602001891015610285575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102fb575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161365d61037a5f395f81816110a8015261247401525f81816105fa015281816108c101528181610da30152818161103a0152818161125501526120a901525f81816105a001528181610815015261141a01525f81816104b601528181611aaa01526124e3015261365d5ff3fe608060405234801561000f575f5ffd5b506004361061026b575f3560e01c80637ecebe001161014b578063ca8aa7c7116100bf578063f2fde38b11610084578063f2fde38b1461062f578063f3b4a00014610642578063f698da251461064c578063fabc1cbc14610654578063fd98042314610667578063fe243a171461067a575f5ffd5b8063ca8aa7c71461059b578063cbc2bd62146105c2578063de44acb6146105d5578063df5cf723146105f5578063e7a050aa1461061c575f5ffd5b80638da5cb5b116101105780638da5cb5b1461052b57806394f649dd1461053c578063967fc0d21461054f5780639ac01d6114610562578063b5d8b5b814610575578063c665670214610588575f5ffd5b80637ecebe001461047f578063829fca731461049e578063886f1195146104b157806388c10299146104f05780638b8aac3c14610503575f5ffd5b806350ff7225116101e25780635de08ff2116101a75780635de08ff2146103fc578063663c1de41461040f578063715018a614610431578063724af4231461043957806376fb162b1461044c5780637def15641461045f575f5ffd5b806350ff72251461037c57806354fd4d50146103a4578063595c6a67146103b95780635ac86ab7146103c15780635c975abb146103f4575f5ffd5b806332e89ace1161023357806332e89ace146102f157806336a8c500146103045780633f292b081461031a5780633fb99ca51461032f57806348825e94146103425780634b6d5d6e14610369575f5ffd5b8063136439dd1461026f5780631794bb3c146102845780632d44def6146102975780632eae418c146102bd57806331f8fb4c146102d0575b5f5ffd5b61028261027d366004612e33565b6106a4565b005b610282610292366004612e5e565b6106de565b6102aa6102a5366004612eb2565b610804565b6040519081526020015b60405180910390f35b6102826102cb366004612ef0565b6108b6565b6102e36102de366004612f3e565b610982565b6040516102b4929190612fda565b6102aa6102ff36600461304b565b610b10565b61030c610b95565b6040516102b4929190613125565b610322610cb0565b6040516102b4919061317b565b61028261033d3660046131d8565b610d98565b6102aa7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61028261037736600461321c565b610ee0565b61038f61038a366004612e5e565b61102d565b604080519283526020830191909152016102b4565b6103ac6110a1565b6040516102b49190613265565b6102826110d1565b6103e46103cf366004613277565b609854600160ff9092169190911b9081161490565b60405190151581526020016102b4565b6098546102aa565b61028261040a366004613297565b6110e5565b6103e461041d36600461321c565b60d16020525f908152604090205460ff1681565b610282611238565b6102aa610447366004612e5e565b611249565b6102aa61045a366004612eb2565b6112a6565b61047261046d366004613306565b6112f5565b6040516102b49190613320565b6102aa61048d36600461321c565b60ca6020525f908152604090205481565b6102aa6104ac366004612f3e565b611327565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102b4565b6104726104fe366004612f3e565b611361565b6102aa61051136600461321c565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166104d8565b6102e361054a36600461321c565b611498565b60cb546104d8906001600160a01b031681565b6102aa610570366004613332565b61160f565b610282610583366004613297565b6116a0565b61028261059636600461321c565b6117e7565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b6104d86105d0366004613393565b61180a565b6105e86105e336600461321c565b61183e565b6040516102b491906133bd565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b6102aa61062a366004612e5e565b6118b1565b61028261063d36600461321c565b6118e4565b6104d8620e16e481565b6102aa61195a565b610282610662366004612e33565b611a13565b6102aa61067536600461321c565b611a80565b6102aa6106883660046133cf565b60cd60209081525f928352604080842090915290825290205481565b6106ac611a95565b60985481811681146106d15760405163c61dca5d60e01b815260040160405180910390fd5b6106da82611b38565b5050565b5f54610100900460ff16158080156106fc57505f54600160ff909116105b806107155750303b15801561071557505f5460ff166001145b61077d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561079e575f805461ff0019166101001790555b6107a782611b38565b6107b084611b75565b6107b983611bc6565b80156107fe575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b5f61080d611c2f565b6108a38484847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630f3df50e896040518263ffffffff1660e01b815260040161085f919061344f565b602060405180830381865afa15801561087a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089e919061345d565b611c88565b90506108af6001606555565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ff5760405163f739589b60e01b815260040160405180910390fd5b610907611c2f565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061093790879086908690600401613478565b6020604051808303815f875af1158015610953573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610977919061349c565b506107fe6001606555565b6060805f60d7816109a061099b368990038901896134b3565b611e90565b81526020019081526020015f205f8581526020019081526020015f2090505f6109c882611ef3565b90505f81516001600160401b038111156109e4576109e4613007565b604051908082528060200260200182016040528015610a0d578160200160208202803683370190505b5090505f82516001600160401b03811115610a2a57610a2a613007565b604051908082528060200260200182016040528015610a53578160200160208202803683370190505b5090505f5b8351811015610b0057838181518110610a7357610a7361350f565b6020026020010151838281518110610a8d57610a8d61350f565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad9848281518110610ac257610ac261350f565b602002602001015186611eff90919063ffffffff16565b9050828281518110610aed57610aed61350f565b6020908102919091010152600101610a58565b50909450925050505b9250929050565b5f5f610b1b81611f23565b610b23611c2f565b6001600160a01b0385165f90815260ca6020526040902054610b5486610b4d818c8c8c878c61160f565b8688611f4e565b6001600160a01b0386165f90815260ca60205260409020600182019055610b7d868a8a8a611fa0565b925050610b8a6001606555565b509695505050505050565b6060805f610ba360d461210d565b90505f816001600160401b03811115610bbe57610bbe613007565b604051908082528060200260200182016040528015610be7578160200160208202803683370190505b5090505f826001600160401b03811115610c0357610c03613007565b604051908082528060200260200182016040528015610c2c578160200160208202803683370190505b5090505f5b83811015610ca5575f5f610c4660d484612117565b9150915081858481518110610c5d57610c5d61350f565b60200260200101906001600160a01b031690816001600160a01b03168152505080848481518110610c9057610c9061350f565b60209081029190910101525050600101610c31565b509094909350915050565b60605f610cbd60d8612125565b90505f816001600160401b03811115610cd857610cd8613007565b604051908082528060200260200182016040528015610d1c57816020015b604080518082019091525f8082526020820152815260200190600190039081610cf65790505b5090505f5b82811015610d9157610d6c610d3760d88361212e565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610d7e57610d7e61350f565b6020908102919091010152600101610d21565b5092915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610de15760405163f739589b60e01b815260040160405180910390fd5b610de9611c2f565b5f60d781610dff61099b368990038901896134b3565b815260208082019290925260409081015f90812087825290925290209050610e28818484612139565b610e455760405163ca354fa360e01b815260040160405180910390fd5b610e62610e5a61099b368890038801886134b3565b60d89061214e565b50610e978460da5f610e7c61099b368b90038b018b6134b3565b81526020019081526020015f2061214e90919063ffffffff16565b507f5f5209798bbac45a16d2dc3bc67319fab26ee00153916d6f07b69f8a134a1e8b85858585604051610ecd9493929190613523565b60405180910390a1506107fe6001606555565b610ee8611c2f565b5f610ef460d483611eff565b915050610f0260d483612159565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a1801561101f57816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbe919061345d565b846040518463ffffffff1660e01b8152600401610fdd93929190613478565b6020604051808303815f875af1158015610ff9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101d919061349c565b505b5061102a6001606555565b50565b5f80336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110785760405163f739589b60e01b815260040160405180910390fd5b611080611c2f565b61108b85858561216d565b915091506110996001606555565b935093915050565b60606110cc7f00000000000000000000000000000000000000000000000000000000000000006122d5565b905090565b6110d9611a95565b6110e35f19611b38565b565b60cb546001600160a01b03163314611110576040516320ba3ff960e21b815260040160405180910390fd5b611118611c2f565b805f5b8181101561122c5760d15f8585848181106111385761113861350f565b905060200201602081019061114d919061321c565b6001600160a01b0316815260208101919091526040015f205460ff1661122457600160d15f8686858181106111845761118461350f565b9050602002016020810190611199919061321c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8484838181106111f3576111f361350f565b9050602002016020810190611208919061321c565b6040516001600160a01b03909116815260200160405180910390a15b60010161111b565b50506106da6001606555565b611240612312565b6110e35f611b75565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112935760405163f739589b60e01b815260040160405180910390fd5b61129b611c2f565b6108a384848461236c565b5f806112eb8360d7836112c161099b368b90038b018b6134b3565b81526020019081526020015f205f8781526020019081526020015f20611eff90919063ffffffff16565b9695505050505050565b606061132160da5f61130f61099b368790038701876134b3565b81526020019081526020015f2061241a565b92915050565b5f6108af60d78261134061099b368890038801886134b3565b81526020019081526020015f205f8481526020019081526020015f2061210d565b606061136b611c2f565b5f6113a560d78261138461099b368990038901896134b3565b81526020019081526020015f205f8581526020019081526020015f20611ef3565b80519091505f816001600160401b038111156113c3576113c3613007565b6040519080825280602002602001820160405280156113ec578160200160208202803683370190505b5090505f5b828110156114895761146487878684815181106114105761141061350f565b60200260200101517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630f3df50e8c6040518263ffffffff1660e01b815260040161085f919061344f565b8282815181106114765761147661350f565b60209081029190910101526001016113f1565b50925050506113216001606555565b6001600160a01b0381165f90815260ce6020526040812054606091829190816001600160401b038111156114ce576114ce613007565b6040519080825280602002602001820160405280156114f7578160200160208202803683370190505b5090505f5b82811015611585576001600160a01b0386165f90815260cd6020908152604080832060ce909252822080549192918490811061153a5761153a61350f565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205482518390839081106115725761157261350f565b60209081029190910101526001016114fc565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f2081818054806020026020016040519081016040528092919081815260200182805480156115fd57602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116115df575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611695906101000160405160208183030381529060405280519060200120612426565b979650505050505050565b60cb546001600160a01b031633146116cb576040516320ba3ff960e21b815260040160405180910390fd5b6116d3611c2f565b805f5b8181101561122c5760d15f8585848181106116f3576116f361350f565b9050602002016020810190611708919061321c565b6001600160a01b0316815260208101919091526040015f205460ff16156117df575f60d15f86868581811061173f5761173f61350f565b9050602002016020810190611754919061321c565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba0308484838181106117ae576117ae61350f565b90506020020160208101906117c3919061321c565b6040516001600160a01b03909116815260200160405180910390a15b6001016116d6565b6117ef612312565b6117f7611c2f565b61180081611bc6565b61102a6001606555565b60ce602052815f5260405f208181548110611823575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce60209081526040918290208054835181840281018401909452808452606093928301828280156118a557602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611887575b50505050509050919050565b5f5f6118bc81611f23565b6118c4611c2f565b6118d033868686611fa0565b91506118dc6001606555565b509392505050565b6118ec612312565b6001600160a01b0381166119515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610774565b61102a81611b75565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea6119c761246c565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b611a1b6124e1565b60985480198219811614611a425760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f611a8d60d484611eff565b949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611af7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1b9190613555565b6110e357604051631d77d47760e21b815260040160405180910390fd5b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b600260655403611c815760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610774565b6002606555565b5f8060d781611c9f61099b368a90038a018a6134b3565b815260208082019290925260409081015f90812088825290925281209150611cc78286611eff565b9150611cd590508286612159565b505f8115611dec57856001600160a01b031663d9caed1286886001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d4d919061345d565b856040518463ffffffff1660e01b8152600401611d6c93929190613478565b6020604051808303815f875af1158015611d88573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dac919061349c565b90507fe6413aa0c789e437b0a06bf64b20926584f066c79a2d8b80a759c85472f7b0af88888885604051611de39493929190613523565b60405180910390a15b5f611df684611ef3565b519050805f03611e8457611e348860da5f611e1961099b368f90038f018f6134b3565b81526020019081526020015f2061259290919063ffffffff16565b50611e5f60da5f611e4d61099b368e90038e018e6134b3565b81526020019081526020015f20612125565b5f03611e8457611e82611e7a61099b368c90038c018c6134b3565b60d890612592565b505b50979650505050505050565b5f815f0151826020015163ffffffff16604051602001611edb92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261132190613574565b60605f6108af8361259d565b5f808080611f16866001600160a01b0387166125a8565b9097909650945050505050565b609854600160ff83161b9081160361102a5760405163840a48d560e01b815260040160405180910390fd5b42811015611f6f57604051630819bdcd60e01b815260040160405180910390fd5b611f836001600160a01b03851684846125e0565b6107fe57604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff16611fda57604051632efd965160e11b815260040160405180910390fd5b611fef6001600160a01b038516338786612634565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561203b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061205f919061349c565b91505f5f61206e88888661216d565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156120ec575f5ffd5b505af11580156120fe573d5f5f3e3d5ffd5b50505050505050949350505050565b5f6113218261268c565b5f808080611f168686612696565b5f611321825490565b5f6108af83836126bf565b5f611a8d846001600160a01b038516846126e5565b5f6108af8383612701565b5f6108af836001600160a01b03841661274d565b5f806001600160a01b038516612196576040516316f2ccc960e01b815260040160405180910390fd5b825f036121b6576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052908120549081900361225c576001600160a01b0386165f90815260ce60209081526040909120541061221e576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b61226684826135ab565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62906122c290889088908890613478565b60405180910390a1959294509192505050565b60605f6122e183612769565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146110e35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610774565b5f815f0361238d576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038085165f90815260cd6020908152604080832093871683529290522054808311156123d357604051634b18b19360e01b815260040160405180910390fd5b6123dd83826135be565b6001600160a01b038087165f90815260cd602090815260408083209389168352929052908120829055909150819003611a8d57611a8d8585612790565b60605f6108af8361290e565b5f61242f61195a565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f6124987f00000000000000000000000000000000000000000000000000000000000000006122d5565b9050805f815181106124ac576124ac61350f565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561253d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612561919061345d565b6001600160a01b0316336001600160a01b0316146110e35760405163794821ff60e01b815260040160405180910390fd5b5f6108af8383612966565b60606113218261241a565b5f8181526002830160205260408120548190806125d5576125c98585612a49565b92505f9150610b099050565b600192509050610b09565b5f5f5f6125ed8585612a54565b90925090505f816004811115612605576126056135d1565b1480156126235750856001600160a01b0316826001600160a01b0316145b806112eb57506112eb868686612a93565b6107fe846323b872dd60e01b85858560405160240161265593929190613478565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612b7a565b5f61132182612125565b5f80806126a3858561212e565b5f81815260029690960160205260409095205494959350505050565b5f825f0182815481106126d4576126d461350f565b905f5260205f200154905092915050565b5f8281526002840160205260408120829055611a8d848461214e565b5f81815260018301602052604081205461274657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611321565b505f611321565b5f81815260028301602052604081208190556108af8383612592565b5f60ff8216601f81111561132157604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b818110156128a2576001600160a01b038481165f90815260ce60205260409020805491851691839081106127e0576127e061350f565b5f918252602090912001546001600160a01b03160361289a576001600160a01b0384165f90815260ce60205260409020805461281e906001906135be565b8154811061282e5761282e61350f565b5f9182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061286a5761286a61350f565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506128a2565b6001016127aa565b8181036128c257604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce602052604090208054806128e8576128e86135e5565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b6060815f018054806020026020016040519081016040528092919081815260200182805480156118a557602002820191905f5260205f20905b8154815260200190600101908083116129475750505050509050919050565b5f8181526001830160205260408120548015612a40575f6129886001836135be565b85549091505f9061299b906001906135be565b90508181146129fa575f865f0182815481106129b9576129b961350f565b905f5260205f200154905080875f0184815481106129d9576129d961350f565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080612a0b57612a0b6135e5565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611321565b5f915050611321565b5f6108af8383612c52565b5f5f8251604103612a88576020830151604084015160608501515f1a612a7c87828585612c69565b94509450505050610b09565b505f90506002610b09565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401612abb9291906135f9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612af99190613611565b5f60405180830381855afa9150503d805f8114612b31576040519150601f19603f3d011682016040523d82523d5f602084013e612b36565b606091505b5091509150818015612b4a57506020815110155b80156112eb57508051630b135d3f60e11b90612b6f908301602090810190840161349c565b149695505050505050565b5f612bce826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612d269092919063ffffffff16565b905080515f1480612bee575080806020019051810190612bee9190613555565b612c4d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610774565b505050565b5f81815260018301602052604081205415156108af565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612c9e57505f90506003612d1d565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612cef573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612d17575f60019250925050612d1d565b91505f90505b94509492505050565b6060611a8d84845f85855f5f866001600160a01b03168587604051612d4b9190613611565b5f6040518083038185875af1925050503d805f8114612d85576040519150601f19603f3d011682016040523d82523d5f602084013e612d8a565b606091505b50915091506116958783838760608315612e045782515f03612dfd576001600160a01b0385163b612dfd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610774565b5081611a8d565b611a8d8383815115612e195781518083602001fd5b8060405162461bcd60e51b81526004016107749190613265565b5f60208284031215612e43575f5ffd5b5035919050565b6001600160a01b038116811461102a575f5ffd5b5f5f5f60608486031215612e70575f5ffd5b8335612e7b81612e4a565b92506020840135612e8b81612e4a565b929592945050506040919091013590565b5f60408284031215612eac575f5ffd5b50919050565b5f5f5f60808486031215612ec4575f5ffd5b612ece8585612e9c565b9250604084013591506060840135612ee581612e4a565b809150509250925092565b5f5f5f5f60808587031215612f03575f5ffd5b8435612f0e81612e4a565b93506020850135612f1e81612e4a565b92506040850135612f2e81612e4a565b9396929550929360600135925050565b5f5f60608385031215612f4f575f5ffd5b612f598484612e9c565b946040939093013593505050565b5f8151808452602084019350602083015f5b82811015612fa05781516001600160a01b0316865260209586019590910190600101612f79565b5093949350505050565b5f8151808452602084019350602083015f5b82811015612fa0578151865260209586019590910190600101612fbc565b604081525f612fec6040830185612f67565b8281036020840152612ffe8185612faa565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561304357613043613007565b604052919050565b5f5f5f5f5f5f60c08789031215613060575f5ffd5b863561306b81612e4a565b9550602087013561307b81612e4a565b945060408701359350606087013561309281612e4a565b92506080870135915060a08701356001600160401b038111156130b3575f5ffd5b8701601f810189136130c3575f5ffd5b80356001600160401b038111156130dc576130dc613007565b6130ef601f8201601f191660200161301b565b8181528a6020838501011115613103575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b604080825283519082018190525f9060208501906060840190835b818110156131675783516001600160a01b0316835260209384019390920191600101613140565b505083810360208501526112eb8186612faa565b602080825282518282018190525f918401906040840190835b818110156131cd57835180516001600160a01b0316845260209081015163ffffffff168185015290930192604090920191600101613194565b509095945050505050565b5f5f5f5f60a085870312156131eb575f5ffd5b6131f58686612e9c565b935060408501359250606085013561320c81612e4a565b9396929550929360800135925050565b5f6020828403121561322c575f5ffd5b81356108af81612e4a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108af6020830184613237565b5f60208284031215613287575f5ffd5b813560ff811681146108af575f5ffd5b5f5f602083850312156132a8575f5ffd5b82356001600160401b038111156132bd575f5ffd5b8301601f810185136132cd575f5ffd5b80356001600160401b038111156132e2575f5ffd5b8560208260051b84010111156132f6575f5ffd5b6020919091019590945092505050565b5f60408284031215613316575f5ffd5b6108af8383612e9c565b602081525f6108af6020830184612faa565b5f5f5f5f5f5f60c08789031215613347575f5ffd5b863561335281612e4a565b9550602087013561336281612e4a565b9450604087013561337281612e4a565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156133a4575f5ffd5b82356133af81612e4a565b946020939093013593505050565b602081525f6108af6020830184612f67565b5f5f604083850312156133e0575f5ffd5b82356133eb81612e4a565b915060208301356133fb81612e4a565b809150509250929050565b803563ffffffff81168114613419575f5ffd5b919050565b803561342981612e4a565b6001600160a01b0316825263ffffffff61344560208301613406565b1660208301525050565b60408101611321828461341e565b5f6020828403121561346d575f5ffd5b81516108af81612e4a565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f602082840312156134ac575f5ffd5b5051919050565b5f60408284031280156134c4575f5ffd5b50604080519081016001600160401b03811182821017156134e7576134e7613007565b60405282356134f581612e4a565b815261350360208401613406565b60208201529392505050565b634e487b7160e01b5f52603260045260245ffd5b60a08101613531828761341e565b60408201949094526001600160a01b03929092166060830152608090910152919050565b5f60208284031215613565575f5ffd5b815180151581146108af575f5ffd5b80516020808301519190811015612eac575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561132157611321613597565b8181038181111561132157611321613597565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a8d6040830184613237565b5f82518060208501845e5f92019182525091905056fea2646970667358221220b1bedd5fdd4bc818f929aa1ce4bdccff161cf1863a6ee6ebbb78baa293114c0a64736f6c634300081e0033", } // StrategyManagerABI is the input ABI used to generate the binding from. diff --git a/src/contracts/core/DelegationManager.sol b/src/contracts/core/DelegationManager.sol index 94e27db81b..bb1516baf9 100644 --- a/src/contracts/core/DelegationManager.sol +++ b/src/contracts/core/DelegationManager.sol @@ -295,7 +295,7 @@ contract DelegationManager is newMaxMagnitude: newMaxMagnitude }); - uint256 scaledSharesSlashedFromQueue = _getSlashableSharesInQueue({ + uint256 operatorSharesSlashedFromQueue = _getSlashableSharesInQueue({ operator: operator, strategy: strategy, prevMaxMagnitude: prevMaxMagnitude, @@ -304,7 +304,7 @@ contract DelegationManager is // Calculate the total deposit shares to slash (burn or redistribute) - slashed operator shares plus still-slashable // shares sitting in the withdrawal queue. - totalDepositSharesToSlash = operatorSharesSlashed + scaledSharesSlashedFromQueue; + totalDepositSharesToSlash = operatorSharesSlashed + operatorSharesSlashedFromQueue; // Remove shares from operator _decreaseDelegation({ @@ -377,8 +377,8 @@ contract DelegationManager is // forgefmt: disable-next-item _increaseDelegation({ - operator: operator, - staker: staker, + operator: operator, + staker: staker, strategy: strategies[i], prevDepositShares: uint256(0), addedShares: withdrawableShares[i], @@ -780,6 +780,12 @@ contract DelegationManager is uint64 prevMaxMagnitude, uint64 newMaxMagnitude ) internal view returns (uint256) { + // A maxMagnitude of 0 means the operator has been fully slashed (100%). + // There's nothing left to slash, so slashable shares in the queue is 0. + if (prevMaxMagnitude == 0) { + return 0; + } + // We want ALL shares added to the withdrawal queue in the window [block.number - MIN_WITHDRAWAL_DELAY_BLOCKS, block.number] // // To get this, we take the current shares in the withdrawal queue and subtract the number of shares @@ -793,8 +799,25 @@ contract DelegationManager is // less than or equal to MIN_WITHDRAWAL_DELAY_BLOCKS ago. These shares are still slashable. uint256 scaledSharesAdded = curQueuedScaledShares - prevQueuedScaledShares; - return SlashingLib.scaleForBurning({ - scaledShares: scaledSharesAdded, + // Convert scaled shares to slashed withdrawable shares. + // + // @dev Math derivation (where n is the pre-slash state): + // - depositShares (s_n): shares stored in StrategyManager/EigenPodManager + // - depositScalingFactor (k_n): staker's scaling factor, initialized to 1 + // - prevMaxMagnitude (m_n): operator's previous magnitude, starts at WAD, decreases on slash + // - newMaxMagnitude (m_(n+1)): operator's new magnitude, <= prevMaxMagnitude + // - operatorShares: s_n * k_n * m_n (withdrawable shares) + // - scaledShares: s_n * k_n (stored when queueing withdrawal) + // + // We want: operatorShares slashed = s_n * k_n * m_n - s_n * k_n * m_(n+1) + // + // calcSlashedAmount computes: opShares - opShares * m_(n+1) / m_n + // = s_n * k_n * m_n - s_n * k_n * m_n * m_(n+1) / m_n + // = s_n * k_n * m_n - s_n * k_n * m_(n+1) ✓ + // + // So we pass: operatorShares = scaledShares * m_n = s_n * k_n * m_n + return SlashingLib.calcSlashedAmount({ + operatorShares: scaledSharesAdded.mulWad(prevMaxMagnitude), prevMaxMagnitude: prevMaxMagnitude, newMaxMagnitude: newMaxMagnitude }); @@ -1053,11 +1076,11 @@ contract DelegationManager is return _calculateSignableDigest( keccak256( abi.encode( - DELEGATION_APPROVAL_TYPEHASH, - approver, - staker, - operator, - approverSalt, + DELEGATION_APPROVAL_TYPEHASH, + approver, + staker, + operator, + approverSalt, expiry ) ) diff --git a/src/contracts/libraries/SlashingLib.sol b/src/contracts/libraries/SlashingLib.sol index 24b512ed87..b2754e8742 100644 --- a/src/contracts/libraries/SlashingLib.sol +++ b/src/contracts/libraries/SlashingLib.sol @@ -15,9 +15,9 @@ uint64 constant WAD = 1e18; * There are 2 types of shares: * 1. deposit shares * - These can be converted to an amount of tokens given a strategy - * - by calling `sharesToUnderlying` on the strategy address (they're already tokens + * - by calling `sharesToUnderlying` on the strategy address (they're already tokens * in the case of EigenPods) - * - These live in the storage of the EigenPodManager and individual StrategyManager strategies + * - These live in the storage of the EigenPodManager and individual StrategyManager strategies * 2. withdrawable shares * - For a staker, this is the amount of shares that they can withdraw * - For an operator, the shares delegated to them are equal to the sum of their stakers' @@ -77,20 +77,6 @@ library SlashingLib { return scaledShares.mulWad(slashingFactor); } - /** - * @notice Scales shares according to the difference in an operator's magnitude before and - * after being slashed. This is used to calculate the number of slashable shares in the - * withdrawal queue. - * NOTE: max magnitude is guaranteed to only ever decrease. - */ - function scaleForBurning( - uint256 scaledShares, - uint64 prevMaxMagnitude, - uint64 newMaxMagnitude - ) internal pure returns (uint256) { - return scaledShares.mulWad(prevMaxMagnitude - newMaxMagnitude); - } - function update( DepositScalingFactor storage dsf, uint256 prevDepositShares, @@ -179,6 +165,12 @@ library SlashingLib { .divWad(slashingFactor); } + /// @notice Calculates the amount of shares that should be slashed given the previous and new magnitudes. + /// @param operatorShares The amount of shares to slash. + /// @param prevMaxMagnitude The previous magnitude of the operator. + /// @param newMaxMagnitude The new magnitude of the operator. + /// @return The amount of shares that should be slashed. + /// @dev This function will revert with a divide by zero error if the previous magnitude is 0. function calcSlashedAmount( uint256 operatorShares, uint256 prevMaxMagnitude, diff --git a/src/test/unit/DelegationUnit.t.sol b/src/test/unit/DelegationUnit.t.sol index 8528f2893f..24291d45bd 100644 --- a/src/test/unit/DelegationUnit.t.sol +++ b/src/test/unit/DelegationUnit.t.sol @@ -5676,6 +5676,33 @@ contract DelegationManagerUnitTests_slashingShares is DelegationManagerUnitTests assertEq(slashableSharesInQueueAfter, 0, "slashable shares in queue should be 0 after burning"); } + /// @notice Verifies getSlashableSharesInQueue returns 0 when operator is fully slashed (maxMagnitude = 0). + /// A fully slashed operator has no remaining slashable shares. + function test_getSlashableSharesInQueue_ReturnsZero_WhenFullySlashed() public { + // Register operator and set up deposits + _registerOperatorWithBaseDetails(defaultOperator); + _setOperatorMagnitude(defaultOperator, strategyMock, WAD); + + uint depositAmount = 100e18; + strategyManagerMock.addDeposit(defaultStaker, strategyMock, depositAmount); + _delegateToOperatorWhoAcceptsAllStakers(defaultStaker, defaultOperator); + + // Queue a withdrawal so there are shares in the queue + (QueuedWithdrawalParams[] memory queuedWithdrawalParams,,) = + _setUpQueueWithdrawalsSingleStrat({staker: defaultStaker, strategy: strategyMock, depositSharesToWithdraw: depositAmount}); + cheats.prank(defaultStaker); + delegationManager.queueWithdrawals(queuedWithdrawalParams); + + // Fully slash the operator (maxMagnitude -> 0) + _setOperatorMagnitude(defaultOperator, strategyMock, 0); + cheats.prank(address(allocationManagerMock)); + delegationManager.slashOperatorShares(defaultOperator, defaultOperatorSet, defaultSlashId, strategyMock, WAD, uint64(0)); + + // After full slashing, there are no more slashable shares - should return 0 + uint slashableShares = delegationManager.getSlashableSharesInQueue(defaultOperator, strategyMock); + assertEq(slashableShares, 0, "fully slashed operator should have 0 slashable shares in queue"); + } + /// @notice Verifies that shares are NOT burnable for a withdrawal queued just before the MIN_WITHDRAWAL_DELAY_BLOCKS function test_sharesNotBurnableWhenWithdrawalCompletable() public { // Register operator