diff --git a/kroma-bindings/bindings/validatormanager.go b/kroma-bindings/bindings/validatormanager.go index b9ffcfa53..940e4c1c4 100644 --- a/kroma-bindings/bindings/validatormanager.go +++ b/kroma-bindings/bindings/validatormanager.go @@ -46,8 +46,8 @@ type IValidatorManagerConstructorParams struct { // ValidatorManagerMetaData contains all meta data concerning the ValidatorManager contract. var ValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_constructorParams\",\"type\":\"tuple\",\"internalType\":\"structIValidatorManager.ConstructorParams\",\"components\":[{\"name\":\"_l2Oracle\",\"type\":\"address\",\"internalType\":\"contractL2OutputOracle\"},{\"name\":\"_assetManager\",\"type\":\"address\",\"internalType\":\"contractAssetManager\"},{\"name\":\"_trustedValidator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_commissionRateMinChangeSeconds\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_roundDurationSeconds\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_jailPeriodSeconds\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_jailThreshold\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_maxOutputFinalizations\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_baseReward\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_minRegisterAmount\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_minActivateAmount\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_MANAGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractAssetManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BASE_REWARD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BOOSTED_REWARD_DENOM\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BOOSTED_REWARD_NUMERATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COMMISSION_RATE_DENOM\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COMMISSION_RATE_MIN_CHANGE_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"JAIL_PERIOD_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"JAIL_THRESHOLD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"L2_ORACLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractL2OutputOracle\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_OUTPUT_FINALIZATIONS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MIN_ACTIVATE_AMOUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MIN_REGISTER_AMOUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ROUND_DURATION_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TRUSTED_VALIDATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activateValidator\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"activatedValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activatedValidatorTotalWeight\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint120\",\"internalType\":\"uint120\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"afterSubmitL2Output\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"changeCommissionRate\",\"inputs\":[{\"name\":\"newCommissionRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkSubmissionEligibility\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCommissionMaxChangeRate\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCommissionRate\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStatus\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIValidatorManager.ValidatorStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint120\",\"internalType\":\"uint120\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inJail\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isActive\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"jailExpiresAt\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextValidator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"noSubmissionCount\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerValidator\",\"inputs\":[{\"name\":\"assets\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"commissionRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"commissionMaxChangeRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slash\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"winner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"loser\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tryUnjail\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"force\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateValidatorTree\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tryRemove\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"ChallengeRewardDistributed\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardDistributed\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"validatorReward\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"},{\"name\":\"baseReward\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"},{\"name\":\"boostedReward\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Slashed\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"loser\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorActivated\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorCommissionRateChanged\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldCommissionRate\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"newCommissionRate\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorJailed\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"expiresAt\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRegistered\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activated\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"commissionRate\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"commissionMaxChangeRate\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"assets\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorStopped\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"stopsAt\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorUnjailed\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CommissionChangeRateExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ImproperValidatorStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientAsset\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConstructorParams\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxCommissionChangeRateExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxCommissionRateExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotElapsedCommissionChangePeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotElapsedJailPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotSelectedPriorityValidator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameCommissionRate\",\"inputs\":[]}]", - Bin: "0x6101e06040523480156200001257600080fd5b50604051620051d0380380620051d0833981016040819052620000359162000171565b8061014001516001600160801b03168161012001516001600160801b031611156200007357604051631510b77f60e01b815260040160405180910390fd5b80516001600160a01b0390811660809081526020830151821660a0908152604084015190921660c0908152610120808501516001600160801b0390811660e09081526101408088015183166101009081526060890151841690945294870151821690945293850151841661016052908401518316610180529083015182166101a05290910151166101c05262000264565b60405161016081016001600160401b03811182821017156200013657634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200015457600080fd5b919050565b80516001600160801b03811681146200015457600080fd5b600061016082840312156200018557600080fd5b6200018f62000104565b6200019a836200013c565b8152620001aa602084016200013c565b6020820152620001bd604084016200013c565b6040820152620001d06060840162000159565b6060820152620001e36080840162000159565b6080820152620001f660a0840162000159565b60a08201526200020960c0840162000159565b60c08201526200021c60e0840162000159565b60e08201526101006200023181850162000159565b908201526101206200024584820162000159565b908201526101406200025984820162000159565b908201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c051614dd4620003fc600039600081816102cb0152818161426b015281816142ad015261459a015260008181610728015261251b01526000818161034b0152612a730152600081816105030152612dcd0152600081816103720152610b8d01526000818161069e0152610e190152600081816105ef0152818161094a01526114510152600081816102a40152818161083501526111bc0152600081816103240152610bea015260008181610442015281816108690152818161097e01528181610a2301528181610d0701528181611398015281816119f501528181611bfb01528181611d31015281816127320152818161286f015261451501526000818161022f01528181610af40152818161105f01528181611556015281816117a201528181611834015281816118e001528181611acc01528181612310015281816123960152818161241a015281816125a001528181612647015281816129cc01528181612b6e0152612c220152614dd46000f3fe608060405234801561001057600080fd5b50600436106102255760003560e01c80638ee4b6021161012a578063b91b2723116100bd578063cdff5e191161008c578063dff221b511610071578063dff221b5146106c0578063e0cc26a2146106f1578063e7816b7f1461072357600080fd5b8063cdff5e191461067c578063dea152541461069957600080fd5b8063b91b272314610297578063b9551f8214610611578063be11934714610656578063be995dc21461066957600080fd5b8063abeba449116100f9578063abeba449146104fe578063ac6c525114610525578063af6ca7621461059a578063b2653fe3146105ea57600080fd5b80638ee4b6021461048a578063970531c11461049d5780639d6b2e37146104d85780639f8a13d7146104eb57600080fd5b80633ee4d4a3116101bd57806356b65e971161018c5780636874e042116101715780636874e0421461043d57806388576dc914610464578063891aab741461047757600080fd5b806356b65e97146103dd5780635bab847f1461042a57600080fd5b80633ee4d4a31461031f57806342223ae9146103465780634cca5e6c1461036d57806354fd4d501461039457600080fd5b806322009af6116101f957806322009af6146102c6578063263a3402146102ed57806330ccebb5146102f75780633a5490461461031757600080fd5b80621c2ff61461022a5780630763fa7e1461026e578063110d6069146102975780631796e52e1461029f575b600080fd5b6102517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610276602881565b6040516fffffffffffffffffffffffffffffffff9091168152602001610265565b610276606481565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6102f561074a565b005b61030a6103053660046148c8565b6107d5565b6040516102659190614914565b610251610ade565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6103d06040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102659190614955565b61041a6103eb3660046148c8565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff16151590565b6040519015158152602001610265565b6102f56104383660046149d6565b610c0c565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b6102f5610472366004614a25565b610d81565b6102f56104853660046148c8565b611054565b6102f5610498366004614a5e565b611167565b6102766104ab3660046148c8565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff1690565b6102f56104e63660046149d6565b6114ed565b61041a6104f93660046148c8565b611764565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b61057a6105333660046148c8565b6001600160a01b031660009081526003602090815260408083205463ffffffff168352600290915290206001015461010090046effffffffffffffffffffffffffffff1690565b6040516effffffffffffffffffffffffffffff9091168152602001610265565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff1661057a565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b61064461061f3660046148c8565b6001600160a01b03166000908152600460205260409020546301000000900460ff1690565b60405160ff9091168152602001610265565b6102f5610664366004614aa3565b611797565b6102f5610677366004614abc565b6118de565b610684611cce565b60405163ffffffff9091168152602001610265565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6106446106ce3660046148c8565b6001600160a01b0316600090815260046020526040902054610100900460ff1690565b6106446106ff3660046148c8565b6001600160a01b031660009081526004602052604090205462010000900460ff1690565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6003610755336107d5565b6005811115610766576107666148e5565b1415806107935750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b156107ca576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107d333611cf3565b565b6001600160a01b03811660009081526004602052604081205460ff166107fd57506000919050565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f00000000000000000000000000000000000000000000000000000000000000009091169063981cee5390602401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190614afe565b6fffffffffffffffffffffffffffffffff1610156108f657506001919050565b6001600160a01b03828116600081815260036020526040908190205490517f12188543000000000000000000000000000000000000000000000000000000008152600481019290925263ffffffff161515917f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f000000000000000000000000000000000000000000000000000000000000000090911690631218854390602401602060405180830381865afa1580156109c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190614afe565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8e9190614afe565b610a989190614b4a565b6fffffffffffffffffffffffffffffffff161015610ac75780610abe5750600292915050565b50600492915050565b80610ad55750600392915050565b50600592915050565b600080546001600160a01b031615610be75760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b749190614b7b565b9050804210610bd6576000610b898242614b94565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16811115610bd4576001600160a01b039250505090565b505b50506000546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610c17836107d5565b9050818015610c5257506001816005811115610c3557610c356148e5565b1480610c5257506004816005811115610c5057610c506148e5565b145b15610cb057610c62600184611deb565b15610cab57826001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051610ca291815260200190565b60405180910390a25b505050565b6004816005811115610cc457610cc46148e5565b10610cab576040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038085166004830152610d7b9185917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d729190614afe565b60019190611f8e565b50505050565b6002610d8c336107d5565b6005811115610d9d57610d9d6148e5565b1080610dc95750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610e00576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260046020526040902080544290610e58907f00000000000000000000000000000000000000000000000000000000000000009064010000000090046fffffffffffffffffffffffffffffffff16614bab565b6fffffffffffffffffffffffffffffffff161115610ea2576040517f7d7a4d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115610ee0576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460ff620100009091048116908316819003610f29576040517f150393f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160ff168460ff1611610f4757610f428483614bdf565b610f51565b610f518285614bdf565b835490915060ff630100000090910481169082161115610f9d576040517f9ed4fa4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffff00000000000000000000000000000000ff00ffff166201000060ff8681169182027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1692909217640100000000426fffffffffffffffffffffffffffffffff1602178555604080519285168352602083019190915233917fc0b29b9b824f7a62d93fde5832bb8307fd62594d0a08d96d533407a0a147ec48910160405180910390a250505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110b6576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006110c0610ade565b90506001600160a01b03808216148015906110ed5750806001600160a01b0316826001600160a01b031614155b15611124576040517fc625317600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61112d82611764565b611163576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000611172336107d5565b6005811115611183576111836148e5565b146111ba576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff161015611238576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115611276576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff821611156112b4576040517f4143808b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526004602081905260409182902080546fffffffffffffffffffffffffffffffff4216640100000000027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff60ff888116630100000002919091167fffffffffffffffffffffffff0000000000000000000000000000000000ffffff918a1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0090941693909317600117169190911717815591517fd7f1a3d800000000000000000000000000000000000000000000000000000000815291927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263d7f1a3d8926113fa92918991016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b6020604051808303816000875af1158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614afe565b506fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116908516108015906114865761148633611cf3565b60408051821515815260ff86811660208301528516818301526fffffffffffffffffffffffffffffffff87166060820152905133917f04ba0c4d7cbac9138f7b73ec9fef796e4ad320bf5fb204f080f81fd59c2d48b9919081900360800190a25050505050565b6001600160a01b0382166000908152600560205260409020546fffffffffffffffffffffffffffffffff1661154e576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015611625577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d69190614c02565b6001600160a01b0316336001600160a01b031614611620576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d6565b336001600160a01b03831614611667576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260056020526040902054426fffffffffffffffffffffffffffffffff90911611156116cd576040517f1dfc20f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d6826122a3565b6001600160a01b03821660008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a26003611745836107d5565b6005811115611756576117566148e5565b036111635761116382611cf3565b60006005611771836107d5565b6005811115611782576117826148e5565b0361178f57506001919050565b506000919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117f9576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61180161230b565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015611883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a79190614c02565b6000549091506001600160a01b03908116908216036118ce576118c9816122a3565b6118d6565b6118d6612a46565b611163612b1b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561193c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119609190614c02565b6001600160a01b0316336001600160a01b0316146119aa576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052600160448401529182917f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a619190614c1f565b90925090506001600160a01b038316857f1237821480ce4d75f917bc39d1641eb17a5e09a2d5bf982cdd8cb2561aa28e68611a9c8486614bab565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390a3611ac983612db5565b847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4c9190614b7b565b11611ba457600085815260066020526040902080546fffffffffffffffffffffffffffffffff8082168401167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055611cc7565b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c679190614c1f565b5050611c74846000610c0c565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b0385169086907fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa149060200160405180910390a35b5050505050565b600154600090611cee9063ffffffff640100000000820481169116614c4e565b905090565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152611da59183917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015611d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9c9190614afe565b60019190612ed8565b806001600160a01b03167ff33a24861b76047debce215c7ae4915a9befc5d870e97efbd4152df23c72112a42604051611de091815260200190565b60405180910390a250565b6001600160a01b038116600090815260028301602052604081205463ffffffff16808203611e1d576000915050611f88565b6001600160a01b03831660009081526002850160209081526040808320805463ffffffff1916905563ffffffff8481168452600180890190935292208054910154740100000000000000000000000000000000000000009091049091169061010090046effffffffffffffffffffffffffffff165b63ffffffff821615611f345763ffffffff91821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690611e92565b611f3e868461345d565b50508354600163ffffffff64010000000080840482168301909116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9092169190911785559150505b92915050565b6001600160a01b038216600090815260028401602052604081205463ffffffff16808203611fc057600091505061229c565b63ffffffff80821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff8781166101008181027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff85161790945593549290910416927401000000000000000000000000000000000000000090910416908210156121705763ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116848803700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff908116820116909202179091555b63ffffffff8216156121605763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168601909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905554740100000000000000000000000000000000000000009004909116906120bf565b5061216b8784613be9565b612294565b63ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116878503700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff90811682900316909202179091555b63ffffffff8216156122895763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905554740100000000000000000000000000000000000000009004909116906121e7565b506122948784613df5565b600193505050505b9392505050565b6001600160a01b038116600090815260046020526040902054610100900460ff1615612308576001600160a01b038116600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561236c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123909190614b7b565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124169190614b7b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249a9190614c02565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b81526004016124c791815260200190565b602060405180830381865afa1580156124e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125089190614c6b565b6125155760009250505090565b6000805b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1610801561256c5750828411155b15612985576040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126139190614c6b565b15612985576040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015612696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ba9190614c02565b905060008060006126ca84614220565b6040517fad4294510000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526fffffffffffffffffffffffffffffffff858116602484015284811660448401528316606483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063ad42945190608401600060405180830381600087803b15801561277857600080fd5b505af115801561278c573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8581168252878116602083015286168183015290516001600160a01b03881693508a92507fd74a44a8cd6c73740a70271e07ee96d8a495ff30037ae6381cbcdb8fe7f2a1ea9181900360600190a36000878152600660205260409020546fffffffffffffffffffffffffffffffff168015612965576040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af11580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128db9190614c1f565b505060008881526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905590516fffffffffffffffffffffffffffffffff831681526001600160a01b038716918a917fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa14910160405180910390a35b612970856000610c0c565b87600101975085600101955050505050612519565b6fffffffffffffffffffffffffffffffff821615612a3b576040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639902cdc090602401600060405180830381600087803b158015612a1857600080fd5b505af1158015612a2c573d6000803e3d6000fd5b50505050600194505050505090565b600094505050505090565b6000546001600160a01b0316612a5857565b600080546001600160a01b03168152600460205260409020547f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1661010090910460ff1610612ac7576000546107d3906001600160a01b0316612db5565b600080546001600160a01b03168152600460205260409020805460ff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055565b6001805468010000000000000000900463ffffffff1660009081526002602052604081209091015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bee9190614b7b565b90506000826effffffffffffffffffffffffffffff16118015612c115750600081115b15612d895760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae557612c52600185614b94565b6040518263ffffffff1660e01b8152600401612c7091815260200190565b608060405180830381865afa158015612c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb19190614c88565b90506000838260200151434144600143612ccb9190614b94565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c612d3c9190614d5a565b9050612d49600182614309565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055506111639050565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b6000612df36fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614daf565b6001600160a01b03831660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8616908117909155915191825292935090917f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a2612e8c600183611deb565b1561116357816001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051612ecc91815260200190565b60405180910390a25050565b60006040518060e00160405280846001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600115158152602001836effffffffffffffffffffffffffffff168152602001836effffffffffffffffffffffffffffff16815250905083600001600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff1602179055505060008460000160009054906101000a900463ffffffff169050818560010160008363ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548160ff02191690831515021790555060a08201518160010160016101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555060c08201518160010160106101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555090505080856002016000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055508460000160089054906101000a900463ffffffff1663ffffffff166000036131b357845463ffffffff90911668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff90911617909355505050565b845468010000000000000000900463ffffffff165b63ffffffff808216600090815260018089016020526040822090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168b01909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905580549092600160c01b9091041690036132ef5763ffffffff838116600081815260018a016020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000938616939093029290921790915581547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b9091021781556132e68784613be9565b50505050505050565b8054600160e01b900463ffffffff166000036133c55763ffffffff838116600081815260018a8101602052604090912080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000948716949094029390931783559190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b9091021781556132e68784613be9565b805463ffffffff600160e01b8204811660009081526001808b016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff70010000000000000000000000000000000092839004811692909104161115613445578054600160e01b900463ffffffff169150613457565b8054600160c01b900463ffffffff1691505b506131c8565b63ffffffff8082166000908152600184016020526040812080549092600160c01b909104169003613740578054600160e01b900463ffffffff166000036135ef57805474010000000000000000000000000000000000000000900463ffffffff166000036134f05782547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1683556135ab565b600181015460ff161561355857805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1690556135ab565b805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555b5063ffffffff1660009081526001918201602052604081209081550180547fff00000000000000000000000000000000000000000000000000000000000000169055565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613be3565b8054600160e01b900463ffffffff166000036138a757805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613be3565b805463ffffffff600160e01b82048116600090815260018087016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff61010092839004811692909104161115613a7557805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff821681178355600160e01b9096048c168a52868a20909801549254700100000000000000000000000000000000908190048316938190048316939093019091169091027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951791909117909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613be3565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559354600160c01b9096048c168a52868a2090980154700100000000000000000000000000000000908190048316958190048316959095019091169093027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091167fff000000000000000000000000000000000000000000000000000000000000ff90961695909517949094179055915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116905b5061345d565b63ffffffff80821660009081526001840160205260408082208054740100000000000000000000000000000000000000009004909316825290205b815474010000000000000000000000000000000000000000900463ffffffff1615801590613c775750600180820154908301546effffffffffffffffffffffffffffff6101009283900481169290910416115b15610d7b57815481547fffffffffffffffffffffffff00000000000000000000000000000000000000008083166001600160a01b03928316178555835416918116919091178255600180840180548483018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117875584549584900483169384029516949094179092558354929003700100000000000000000000000000000000808404831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790558354821660009081526002870160209081526040808320805463ffffffff998a1663ffffffff199182161790915587549654909516835280832080549095167401000000000000000000000000000000000000000096879004891617909455945484900486168082529187019094528184208054939093049094168352909120613c24565b5b63ffffffff8082166000908152600180850160205260408083208054600160e01b810486168552828520840154600160c01b90910490951684529220015490916effffffffffffffffffffffffffffff61010091829004811691909204909116111561403e57600180820154825463ffffffff600160c01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610cab57805463ffffffff600160c01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613df6565b600180820154825463ffffffff600160e01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610cab57805463ffffffff600160e01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613df6565b6001600160a01b0381166000908152600460205260408120548190819062010000900460ff1681614250866144d8565b90506000806142956fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000085011685606461460e565b90506142d86fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660648681039061460e565b91506142fb6fffffffffffffffffffffffffffffffff841660648681039061460e565b919891975095509350505050565b815460009068010000000000000000900463ffffffff165b63ffffffff80821660009081526001808701602052604080832054600160c01b9004909316825291902001546effffffffffffffffffffffffffffff8085167001000000000000000000000000000000009092041611156143a25763ffffffff9081166000908152600185016020526040902054600160c01b900416614321565b63ffffffff8181166000818152600187810160205260408083208054600160c01b9004909516835282208101549290915291909101547001000000000000000000000000000000009091046effffffffffffffffffffffffffffff9081169094039384811661010090920416111561443b5763ffffffff1660009081526001840160205260409020546001600160a01b03169050611f88565b63ffffffff818116600090815260018681016020526040808320808301549054600160e01b9004909416835290912001546101009091046effffffffffffffffffffffffffffff908116909403938481167001000000000000000000000000000000009092041611156144ce5763ffffffff9081166000908152600185016020526040902054600160e01b900416614321565b6000915050611f88565b6040517f913f1a9f0000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063913f1a9f90602401602060405180830381865afa15801561455c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145809190614afe565b905060006145c36fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166028606461460e565b9050614606816fffffffffffffffffffffffffffffffff16650100000000006145ff856fffffffffffffffffffffffffffffffff1660646146c2565b9190614789565b949350505050565b6000838302608081901c6fffffffffffffffffffffffffffffffff841611614697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f770000000060448201526064015b60405180910390fd5b826fffffffffffffffffffffffffffffffff1681816146b8576146b8614d2b565b0495945050505050565b60008083831080156146db57600181146146ee576146fd565b65010000000000850284900491506146fd565b65010000000000840285900491505b506402ef6c3406818002602890811c808402821c808202831c808302841c808402851c938402851c95909502841c641da06a6e33909502841c6455232d2bb2909202841c640d4ca0c283909302841c643177d95571909102841c64fffe4bcada90960290931c9490940191909101039190910303905081831115611f88576501921fb544430392915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036147e1578382816147d7576147d7614d2b565b049250505061229c565b80841161484a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f770000000000000000000000604482015260640161468e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b038116811461230857600080fd5b6000602082840312156148da57600080fd5b813561229c816148b3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016006831061494f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b8181101561498257858101830151858201604001528201614966565b81811115614994576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b801515811461230857600080fd5b600080604083850312156149e957600080fd5b82356149f4816148b3565b91506020830135614a04816149c8565b809150509250929050565b803560ff81168114614a2057600080fd5b919050565b600060208284031215614a3757600080fd5b61229c82614a0f565b6fffffffffffffffffffffffffffffffff8116811461230857600080fd5b600080600060608486031215614a7357600080fd5b8335614a7e81614a40565b9250614a8c60208501614a0f565b9150614a9a60408501614a0f565b90509250925092565b600060208284031215614ab557600080fd5b5035919050565b600080600060608486031215614ad157600080fd5b833592506020840135614ae3816148b3565b91506040840135614af3816148b3565b809150509250925092565b600060208284031215614b1057600080fd5b815161229c81614a40565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006fffffffffffffffffffffffffffffffff83811690831681811015614b7357614b73614b1b565b039392505050565b600060208284031215614b8d57600080fd5b5051919050565b600082821015614ba657614ba6614b1b565b500390565b60006fffffffffffffffffffffffffffffffff808316818516808303821115614bd657614bd6614b1b565b01949350505050565b600060ff821660ff841680821015614bf957614bf9614b1b565b90039392505050565b600060208284031215614c1457600080fd5b815161229c816148b3565b60008060408385031215614c3257600080fd5b8251614c3d81614a40565b6020840151909250614a0481614a40565b600063ffffffff83811690831681811015614b7357614b73614b1b565b600060208284031215614c7d57600080fd5b815161229c816149c8565b600060808284031215614c9a57600080fd5b6040516080810181811067ffffffffffffffff82111715614ce4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251614cf2816148b3565b8152602083810151908201526040830151614d0c81614a40565b60408201526060830151614d1f81614a40565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006effffffffffffffffffffffffffffff80841680614da3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910692915050565b60008219821115614dc257614dc2614b1b565b50019056fea164736f6c634300080f000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_constructorParams\",\"type\":\"tuple\",\"internalType\":\"structIValidatorManager.ConstructorParams\",\"components\":[{\"name\":\"_l2Oracle\",\"type\":\"address\",\"internalType\":\"contractL2OutputOracle\"},{\"name\":\"_assetManager\",\"type\":\"address\",\"internalType\":\"contractAssetManager\"},{\"name\":\"_trustedValidator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_commissionRateMinChangeSeconds\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_roundDurationSeconds\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_jailPeriodSeconds\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_jailThreshold\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_maxOutputFinalizations\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_baseReward\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_minRegisterAmount\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_minActivateAmount\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_MANAGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractAssetManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BASE_REWARD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BOOSTED_REWARD_DENOM\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BOOSTED_REWARD_NUMERATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COMMISSION_RATE_DENOM\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COMMISSION_RATE_MIN_CHANGE_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"JAIL_PERIOD_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"JAIL_THRESHOLD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"L2_ORACLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractL2OutputOracle\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_OUTPUT_FINALIZATIONS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MIN_ACTIVATE_AMOUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MIN_REGISTER_AMOUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ROUND_DURATION_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TRUSTED_VALIDATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activateValidator\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"activatedValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activatedValidatorTotalWeight\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint120\",\"internalType\":\"uint120\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"afterSubmitL2Output\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"changeCommissionRate\",\"inputs\":[{\"name\":\"newCommissionRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkSubmissionEligibility\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCommissionMaxChangeRate\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCommissionRate\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStatus\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIValidatorManager.ValidatorStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint120\",\"internalType\":\"uint120\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawAccount\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inJail\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isActive\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"jailExpiresAt\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextValidator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"noSubmissionCount\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerValidator\",\"inputs\":[{\"name\":\"assets\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"commissionRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"commissionMaxChangeRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"withdrawAccount\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slash\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"winner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"loser\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tryUnjail\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"force\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateValidatorTree\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tryRemove\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"ChallengeRewardDistributed\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardDistributed\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"validatorReward\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"},{\"name\":\"baseReward\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"},{\"name\":\"boostedReward\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Slashed\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"loser\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorActivated\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorCommissionRateChanged\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldCommissionRate\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"newCommissionRate\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorJailed\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"expiresAt\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRegistered\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activated\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"commissionRate\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"commissionMaxChangeRate\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"assets\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorStopped\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"stopsAt\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorUnjailed\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CommissionChangeRateExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ImproperValidatorStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientAsset\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConstructorParams\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxCommissionChangeRateExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxCommissionRateExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotElapsedCommissionChangePeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotElapsedJailPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotSelectedPriorityValidator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameCommissionRate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6101e06040523480156200001257600080fd5b506040516200528638038062005286833981016040819052620000359162000171565b8061014001516001600160801b03168161012001516001600160801b031611156200007357604051631510b77f60e01b815260040160405180910390fd5b80516001600160a01b0390811660809081526020830151821660a0908152604084015190921660c0908152610120808501516001600160801b0390811660e09081526101408088015183166101009081526060890151841690945294870151821690945293850151841661016052908401518316610180529083015182166101a05290910151166101c05262000264565b60405161016081016001600160401b03811182821017156200013657634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200015457600080fd5b919050565b80516001600160801b03811681146200015457600080fd5b600061016082840312156200018557600080fd5b6200018f62000104565b6200019a836200013c565b8152620001aa602084016200013c565b6020820152620001bd604084016200013c565b6040820152620001d06060840162000159565b6060820152620001e36080840162000159565b6080820152620001f660a0840162000159565b60a08201526200020960c0840162000159565b60c08201526200021c60e0840162000159565b60e08201526101006200023181850162000159565b908201526101206200024584820162000159565b908201526101406200025984820162000159565b908201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c051614e8a620003fc600039600081816102e60152818161430e01528181614350015261463d01526000818161077201526125be0152600081816103660152612b1601526000818161050b0152612e7001526000818161038d0152610bd70152600081816106e80152610e630152600081816105f7015281816109940152611cd40152600081816102bf0152818161087f01526119e701526000818161033f0152610c3401526000818161045d015281816108b3015281816109c801528181610a6d01528181610d51015281816116b9015281816118bf01528181611c5101528181611dd4015281816127d50152818161291201526145b801526000818161024a01528181610b3e015281816110a90152818161121a01528181611466015281816114f8015281816115a401528181611790015281816123b301528181612439015281816124bd01528181612643015281816126ea01528181612a6f01528181612c110152612cc50152614e8a6000f3fe608060405234801561001057600080fd5b50600436106102405760003560e01c8063970531c111610145578063be119347116100bd578063cdff5e191161008c578063dff221b511610071578063dff221b51461070a578063e0cc26a21461073b578063e7816b7f1461076d57600080fd5b8063cdff5e19146106c6578063dea15254146106e357600080fd5b8063be1193471461065e578063be995dc214610671578063c2d9b68414610684578063c5398584146106b357600080fd5b8063ac6c525111610114578063b2653fe3116100f9578063b2653fe3146105f2578063b91b2723146102b2578063b9551f821461061957600080fd5b8063ac6c52511461052d578063af6ca762146105a257600080fd5b8063970531c1146104a55780639d6b2e37146104e05780639f8a13d7146104f3578063abeba4491461050657600080fd5b80633ee4d4a3116101d857806356b65e97116101a75780636874e0421161018c5780636874e0421461045857806388576dc91461047f578063891aab741461049257600080fd5b806356b65e97146103f85780635bab847f1461044557600080fd5b80633ee4d4a31461033a57806342223ae9146103615780634cca5e6c1461038857806354fd4d50146103af57600080fd5b806322009af61161021457806322009af6146102e1578063263a34021461030857806330ccebb5146103125780633a5490461461033257600080fd5b80621c2ff6146102455780630763fa7e14610289578063110d6069146102b25780631796e52e146102ba575b600080fd5b61026c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610291602881565b6040516fffffffffffffffffffffffffffffffff9091168152602001610280565b610291606481565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b610310610794565b005b61032561032036600461496b565b61081f565b60405161028091906149b7565b61026c610b28565b61026c7f000000000000000000000000000000000000000000000000000000000000000081565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b6103eb6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028091906149f8565b61043561040636600461496b565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff16151590565b6040519015158152602001610280565b610310610453366004614a79565b610c56565b61026c7f000000000000000000000000000000000000000000000000000000000000000081565b61031061048d366004614ac8565b610dcb565b6103106104a036600461496b565b61109e565b6102916104b336600461496b565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff1690565b6103106104ee366004614a79565b6111b1565b61043561050136600461496b565b611428565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b61058261053b36600461496b565b6001600160a01b031660009081526003602090815260408083205463ffffffff168352600290915290206001015461010090046effffffffffffffffffffffffffffff1690565b6040516effffffffffffffffffffffffffffff9091168152602001610280565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16610582565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b61064c61062736600461496b565b6001600160a01b03166000908152600460205260409020546301000000900460ff1690565b60405160ff9091168152602001610280565b61031061066c366004614ae3565b61145b565b61031061067f366004614afc565b6115a2565b61026c61069236600461496b565b6001600160a01b039081166000908152600460205260409020600101541690565b6103106106c1366004614b5c565b611992565b6106ce611d71565b60405163ffffffff9091168152602001610280565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b61064c61071836600461496b565b6001600160a01b0316600090815260046020526040902054610100900460ff1690565b61064c61074936600461496b565b6001600160a01b031660009081526004602052604090205462010000900460ff1690565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b600361079f3361081f565b60058111156107b0576107b0614988565b1415806107dd5750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610814576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081d33611d96565b565b6001600160a01b03811660009081526004602052604081205460ff1661084757506000919050565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f00000000000000000000000000000000000000000000000000000000000000009091169063981cee5390602401602060405180830381865afa1580156108fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109209190614bb4565b6fffffffffffffffffffffffffffffffff16101561094057506001919050565b6001600160a01b03828116600081815260036020526040908190205490517f12188543000000000000000000000000000000000000000000000000000000008152600481019290925263ffffffff161515917f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f000000000000000000000000000000000000000000000000000000000000000090911690631218854390602401602060405180830381865afa158015610a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a359190614bb4565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad89190614bb4565b610ae29190614c00565b6fffffffffffffffffffffffffffffffff161015610b115780610b085750600292915050565b50600492915050565b80610b1f5750600392915050565b50600592915050565b600080546001600160a01b031615610c315760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190614c31565b9050804210610c20576000610bd38242614c4a565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16811115610c1e576001600160a01b039250505090565b505b50506000546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610c618361081f565b9050818015610c9c57506001816005811115610c7f57610c7f614988565b1480610c9c57506004816005811115610c9a57610c9a614988565b145b15610cfa57610cac600184611e8e565b15610cf557826001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051610cec91815260200190565b60405180910390a25b505050565b6004816005811115610d0e57610d0e614988565b10610cf5576040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038085166004830152610dc59185917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbc9190614bb4565b60019190612031565b50505050565b6002610dd63361081f565b6005811115610de757610de7614988565b1080610e135750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610e4a576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260046020526040902080544290610ea2907f00000000000000000000000000000000000000000000000000000000000000009064010000000090046fffffffffffffffffffffffffffffffff16614c61565b6fffffffffffffffffffffffffffffffff161115610eec576040517f7d7a4d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115610f2a576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460ff620100009091048116908316819003610f73576040517f150393f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160ff168460ff1611610f9157610f8c8483614c95565b610f9b565b610f9b8285614c95565b835490915060ff630100000090910481169082161115610fe7576040517f9ed4fa4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffff00000000000000000000000000000000ff00ffff166201000060ff8681169182027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1692909217640100000000426fffffffffffffffffffffffffffffffff1602178555604080519285168352602083019190915233917fc0b29b9b824f7a62d93fde5832bb8307fd62594d0a08d96d533407a0a147ec48910160405180910390a250505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611100576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061110a610b28565b90506001600160a01b03808216148015906111375750806001600160a01b0316826001600160a01b031614155b1561116e576040517fc625317600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117782611428565b6111ad576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6001600160a01b0382166000908152600560205260409020546fffffffffffffffffffffffffffffffff16611212576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156112e9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a9190614cb8565b6001600160a01b0316336001600160a01b0316146112e4576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61139a565b336001600160a01b0383161461132b576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260056020526040902054426fffffffffffffffffffffffffffffffff9091161115611391576040517f1dfc20f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61139a82612346565b6001600160a01b03821660008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a260036114098361081f565b600581111561141a5761141a614988565b036111ad576111ad82611d96565b600060056114358361081f565b600581111561144657611446614988565b0361145357506001919050565b506000919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114bd576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c56123ae565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190614cb8565b6000549091506001600160a01b03908116908216036115925761158d81612346565b61159a565b61159a612ae9565b6111ad612bbe565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116249190614cb8565b6001600160a01b0316336001600160a01b03161461166e576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052600160448401529182917f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117259190614cd5565b90925090506001600160a01b038316857f1237821480ce4d75f917bc39d1641eb17a5e09a2d5bf982cdd8cb2561aa28e686117608486614c61565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390a361178d83612e58565b847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118109190614c31565b1161186857600085815260066020526040902080546fffffffffffffffffffffffffffffffff8082168401167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617905561198b565b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b9190614cd5565b5050611938846000610c56565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b0385169086907fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa149060200160405180910390a35b5050505050565b600061199d3361081f565b60058111156119ae576119ae614988565b146119e5576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff161015611a63576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff84161115611aa1576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115611adf576040517f4143808b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611b1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526004602081905260409182902080546fffffffffffffffffffffffffffffffff428116640100000000027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff60ff8a8116630100000002919091167fffffffffffffffffffffffff0000000000000000000000000000000000ffffff918c1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00909516949094176001908117919091169390931717835590820180546001600160a01b038881167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790915593517fd7f1a3d80000000000000000000000000000000000000000000000000000000081529283019490945292871660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063d7f1a3d8906044016020604051808303816000875af1158015611c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc09190614bb4565b506fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690861610801590611d0957611d0933611d96565b60408051821515815260ff87811660208301528616818301526fffffffffffffffffffffffffffffffff88166060820152905133917f04ba0c4d7cbac9138f7b73ec9fef796e4ad320bf5fb204f080f81fd59c2d48b9919081900360800190a2505050505050565b600154600090611d919063ffffffff640100000000820481169116614d04565b905090565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152611e489183917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f9190614bb4565b60019190612f7b565b806001600160a01b03167ff33a24861b76047debce215c7ae4915a9befc5d870e97efbd4152df23c72112a42604051611e8391815260200190565b60405180910390a250565b6001600160a01b038116600090815260028301602052604081205463ffffffff16808203611ec057600091505061202b565b6001600160a01b03831660009081526002850160209081526040808320805463ffffffff1916905563ffffffff8481168452600180890190935292208054910154740100000000000000000000000000000000000000009091049091169061010090046effffffffffffffffffffffffffffff165b63ffffffff821615611fd75763ffffffff91821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690611f35565b611fe18684613500565b50508354600163ffffffff64010000000080840482168301909116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9092169190911785559150505b92915050565b6001600160a01b038216600090815260028401602052604081205463ffffffff1680820361206357600091505061233f565b63ffffffff80821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff8781166101008181027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff85161790945593549290910416927401000000000000000000000000000000000000000090910416908210156122135763ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116848803700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff908116820116909202179091555b63ffffffff8216156122035763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168601909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612162565b5061220e8784613c8c565b612337565b63ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116878503700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff90811682900316909202179091555b63ffffffff82161561232c5763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff909116179055547401000000000000000000000000000000000000000090049091169061228a565b506123378784613e98565b600193505050505b9392505050565b6001600160a01b038116600090815260046020526040902054610100900460ff16156123ab576001600160a01b038116600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124339190614c31565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b99190614c31565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253d9190614cb8565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161256a91815260200190565b602060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab9190614d21565b6125b85760009250505090565b6000805b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1610801561260f5750828411155b15612a28576040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b69190614d21565b15612a28576040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d9190614cb8565b9050600080600061276d846142c3565b6040517fad4294510000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526fffffffffffffffffffffffffffffffff858116602484015284811660448401528316606483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063ad42945190608401600060405180830381600087803b15801561281b57600080fd5b505af115801561282f573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8581168252878116602083015286168183015290516001600160a01b03881693508a92507fd74a44a8cd6c73740a70271e07ee96d8a495ff30037ae6381cbcdb8fe7f2a1ea9181900360600190a36000878152600660205260409020546fffffffffffffffffffffffffffffffff168015612a08576040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af115801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e9190614cd5565b505060008881526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905590516fffffffffffffffffffffffffffffffff831681526001600160a01b038716918a917fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa14910160405180910390a35b612a13856000610c56565b876001019750856001019550505050506125bc565b6fffffffffffffffffffffffffffffffff821615612ade576040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639902cdc090602401600060405180830381600087803b158015612abb57600080fd5b505af1158015612acf573d6000803e3d6000fd5b50505050600194505050505090565b600094505050505090565b6000546001600160a01b0316612afb57565b600080546001600160a01b03168152600460205260409020547f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1661010090910460ff1610612b6a5760005461081d906001600160a01b0316612e58565b600080546001600160a01b03168152600460205260409020805460ff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055565b6001805468010000000000000000900463ffffffff1660009081526002602052604081209091015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c919190614c31565b90506000826effffffffffffffffffffffffffffff16118015612cb45750600081115b15612e2c5760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae557612cf5600185614c4a565b6040518263ffffffff1660e01b8152600401612d1391815260200190565b608060405180830381865afa158015612d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d549190614d3e565b90506000838260200151434144600143612d6e9190614c4a565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c612ddf9190614e10565b9050612dec6001826143ac565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055506111ad9050565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b6000612e966fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614e65565b6001600160a01b03831660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8616908117909155915191825292935090917f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a2612f2f600183611e8e565b156111ad57816001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051612f6f91815260200190565b60405180910390a25050565b60006040518060e00160405280846001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600115158152602001836effffffffffffffffffffffffffffff168152602001836effffffffffffffffffffffffffffff16815250905083600001600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff1602179055505060008460000160009054906101000a900463ffffffff169050818560010160008363ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548160ff02191690831515021790555060a08201518160010160016101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555060c08201518160010160106101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555090505080856002016000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055508460000160089054906101000a900463ffffffff1663ffffffff1660000361325657845463ffffffff90911668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff90911617909355505050565b845468010000000000000000900463ffffffff165b63ffffffff808216600090815260018089016020526040822090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168b01909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905580549092600160c01b9091041690036133925763ffffffff838116600081815260018a016020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000938616939093029290921790915581547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b9091021781556133898784613c8c565b50505050505050565b8054600160e01b900463ffffffff166000036134685763ffffffff838116600081815260018a8101602052604090912080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000948716949094029390931783559190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b9091021781556133898784613c8c565b805463ffffffff600160e01b8204811660009081526001808b016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff700100000000000000000000000000000000928390048116929091041611156134e8578054600160e01b900463ffffffff1691506134fa565b8054600160c01b900463ffffffff1691505b5061326b565b63ffffffff8082166000908152600184016020526040812080549092600160c01b9091041690036137e3578054600160e01b900463ffffffff1660000361369257805474010000000000000000000000000000000000000000900463ffffffff166000036135935782547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff16835561364e565b600181015460ff16156135fb57805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16905561364e565b805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555b5063ffffffff1660009081526001918201602052604081209081550180547fff00000000000000000000000000000000000000000000000000000000000000169055565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613c86565b8054600160e01b900463ffffffff1660000361394a57805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613c86565b805463ffffffff600160e01b82048116600090815260018087016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff61010092839004811692909104161115613b1857805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff821681178355600160e01b9096048c168a52868a20909801549254700100000000000000000000000000000000908190048316938190048316939093019091169091027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951791909117909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613c86565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559354600160c01b9096048c168a52868a2090980154700100000000000000000000000000000000908190048316958190048316959095019091169093027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091167fff000000000000000000000000000000000000000000000000000000000000ff90961695909517949094179055915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116905b50613500565b63ffffffff80821660009081526001840160205260408082208054740100000000000000000000000000000000000000009004909316825290205b815474010000000000000000000000000000000000000000900463ffffffff1615801590613d1a5750600180820154908301546effffffffffffffffffffffffffffff6101009283900481169290910416115b15610dc557815481547fffffffffffffffffffffffff00000000000000000000000000000000000000008083166001600160a01b03928316178555835416918116919091178255600180840180548483018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117875584549584900483169384029516949094179092558354929003700100000000000000000000000000000000808404831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790558354821660009081526002870160209081526040808320805463ffffffff998a1663ffffffff199182161790915587549654909516835280832080549095167401000000000000000000000000000000000000000096879004891617909455945484900486168082529187019094528184208054939093049094168352909120613cc7565b5b63ffffffff8082166000908152600180850160205260408083208054600160e01b810486168552828520840154600160c01b90910490951684529220015490916effffffffffffffffffffffffffffff6101009182900481169190920490911611156140e157600180820154825463ffffffff600160c01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610cf557805463ffffffff600160c01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613e99565b600180820154825463ffffffff600160e01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610cf557805463ffffffff600160e01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613e99565b6001600160a01b0381166000908152600460205260408120548190819062010000900460ff16816142f38661457b565b90506000806143386fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008501168560646146b1565b905061437b6fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166064868103906146b1565b915061439e6fffffffffffffffffffffffffffffffff84166064868103906146b1565b919891975095509350505050565b815460009068010000000000000000900463ffffffff165b63ffffffff80821660009081526001808701602052604080832054600160c01b9004909316825291902001546effffffffffffffffffffffffffffff8085167001000000000000000000000000000000009092041611156144455763ffffffff9081166000908152600185016020526040902054600160c01b9004166143c4565b63ffffffff8181166000818152600187810160205260408083208054600160c01b9004909516835282208101549290915291909101547001000000000000000000000000000000009091046effffffffffffffffffffffffffffff908116909403938481166101009092041611156144de5763ffffffff1660009081526001840160205260409020546001600160a01b0316905061202b565b63ffffffff818116600090815260018681016020526040808320808301549054600160e01b9004909416835290912001546101009091046effffffffffffffffffffffffffffff908116909403938481167001000000000000000000000000000000009092041611156145715763ffffffff9081166000908152600185016020526040902054600160e01b9004166143c4565b600091505061202b565b6040517f913f1a9f0000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063913f1a9f90602401602060405180830381865afa1580156145ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146239190614bb4565b905060006146666fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602860646146b1565b90506146a9816fffffffffffffffffffffffffffffffff16650100000000006146a2856fffffffffffffffffffffffffffffffff166064614765565b919061482c565b949350505050565b6000838302608081901c6fffffffffffffffffffffffffffffffff84161161473a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f770000000060448201526064015b60405180910390fd5b826fffffffffffffffffffffffffffffffff16818161475b5761475b614de1565b0495945050505050565b600080838310801561477e5760018114614791576147a0565b65010000000000850284900491506147a0565b65010000000000840285900491505b506402ef6c3406818002602890811c808402821c808202831c808302841c808402851c938402851c95909502841c641da06a6e33909502841c6455232d2bb2909202841c640d4ca0c283909302841c643177d95571909102841c64fffe4bcada90960290931c949094019190910103919091030390508183111561202b576501921fb544430392915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036148845783828161487a5761487a614de1565b049250505061233f565b8084116148ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401614731565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03811681146123ab57600080fd5b60006020828403121561497d57600080fd5b813561233f81614956565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600683106149f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b81811015614a2557858101830151858201604001528201614a09565b81811115614a37576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b80151581146123ab57600080fd5b60008060408385031215614a8c57600080fd5b8235614a9781614956565b91506020830135614aa781614a6b565b809150509250929050565b803560ff81168114614ac357600080fd5b919050565b600060208284031215614ada57600080fd5b61233f82614ab2565b600060208284031215614af557600080fd5b5035919050565b600080600060608486031215614b1157600080fd5b833592506020840135614b2381614956565b91506040840135614b3381614956565b809150509250925092565b6fffffffffffffffffffffffffffffffff811681146123ab57600080fd5b60008060008060808587031215614b7257600080fd5b8435614b7d81614b3e565b9350614b8b60208601614ab2565b9250614b9960408601614ab2565b91506060850135614ba981614956565b939692955090935050565b600060208284031215614bc657600080fd5b815161233f81614b3e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006fffffffffffffffffffffffffffffffff83811690831681811015614c2957614c29614bd1565b039392505050565b600060208284031215614c4357600080fd5b5051919050565b600082821015614c5c57614c5c614bd1565b500390565b60006fffffffffffffffffffffffffffffffff808316818516808303821115614c8c57614c8c614bd1565b01949350505050565b600060ff821660ff841680821015614caf57614caf614bd1565b90039392505050565b600060208284031215614cca57600080fd5b815161233f81614956565b60008060408385031215614ce857600080fd5b8251614cf381614b3e565b6020840151909250614aa781614b3e565b600063ffffffff83811690831681811015614c2957614c29614bd1565b600060208284031215614d3357600080fd5b815161233f81614a6b565b600060808284031215614d5057600080fd5b6040516080810181811067ffffffffffffffff82111715614d9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251614da881614956565b8152602083810151908201526040830151614dc281614b3e565b60408201526060830151614dd581614b3e565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006effffffffffffffffffffffffffffff80841680614e59577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910692915050565b60008219821115614e7857614e78614bd1565b50019056fea164736f6c634300080f000a", } // ValidatorManagerABI is the input ABI used to generate the binding from. @@ -866,6 +866,37 @@ func (_ValidatorManager *ValidatorManagerCallerSession) GetWeight(validator comm return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validator) } +// GetWithdrawAccount is a free data retrieval call binding the contract method 0xc2d9b684. +// +// Solidity: function getWithdrawAccount(address validator) view returns(address) +func (_ValidatorManager *ValidatorManagerCaller) GetWithdrawAccount(opts *bind.CallOpts, validator common.Address) (common.Address, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getWithdrawAccount", validator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetWithdrawAccount is a free data retrieval call binding the contract method 0xc2d9b684. +// +// Solidity: function getWithdrawAccount(address validator) view returns(address) +func (_ValidatorManager *ValidatorManagerSession) GetWithdrawAccount(validator common.Address) (common.Address, error) { + return _ValidatorManager.Contract.GetWithdrawAccount(&_ValidatorManager.CallOpts, validator) +} + +// GetWithdrawAccount is a free data retrieval call binding the contract method 0xc2d9b684. +// +// Solidity: function getWithdrawAccount(address validator) view returns(address) +func (_ValidatorManager *ValidatorManagerCallerSession) GetWithdrawAccount(validator common.Address) (common.Address, error) { + return _ValidatorManager.Contract.GetWithdrawAccount(&_ValidatorManager.CallOpts, validator) +} + // InJail is a free data retrieval call binding the contract method 0x56b65e97. // // Solidity: function inJail(address validator) view returns(bool) @@ -1115,25 +1146,25 @@ func (_ValidatorManager *ValidatorManagerTransactorSession) ChangeCommissionRate return _ValidatorManager.Contract.ChangeCommissionRate(&_ValidatorManager.TransactOpts, newCommissionRate) } -// RegisterValidator is a paid mutator transaction binding the contract method 0x8ee4b602. +// RegisterValidator is a paid mutator transaction binding the contract method 0xc5398584. // -// Solidity: function registerValidator(uint128 assets, uint8 commissionRate, uint8 commissionMaxChangeRate) returns() -func (_ValidatorManager *ValidatorManagerTransactor) RegisterValidator(opts *bind.TransactOpts, assets *big.Int, commissionRate uint8, commissionMaxChangeRate uint8) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "registerValidator", assets, commissionRate, commissionMaxChangeRate) +// Solidity: function registerValidator(uint128 assets, uint8 commissionRate, uint8 commissionMaxChangeRate, address withdrawAccount) returns() +func (_ValidatorManager *ValidatorManagerTransactor) RegisterValidator(opts *bind.TransactOpts, assets *big.Int, commissionRate uint8, commissionMaxChangeRate uint8, withdrawAccount common.Address) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "registerValidator", assets, commissionRate, commissionMaxChangeRate, withdrawAccount) } -// RegisterValidator is a paid mutator transaction binding the contract method 0x8ee4b602. +// RegisterValidator is a paid mutator transaction binding the contract method 0xc5398584. // -// Solidity: function registerValidator(uint128 assets, uint8 commissionRate, uint8 commissionMaxChangeRate) returns() -func (_ValidatorManager *ValidatorManagerSession) RegisterValidator(assets *big.Int, commissionRate uint8, commissionMaxChangeRate uint8) (*types.Transaction, error) { - return _ValidatorManager.Contract.RegisterValidator(&_ValidatorManager.TransactOpts, assets, commissionRate, commissionMaxChangeRate) +// Solidity: function registerValidator(uint128 assets, uint8 commissionRate, uint8 commissionMaxChangeRate, address withdrawAccount) returns() +func (_ValidatorManager *ValidatorManagerSession) RegisterValidator(assets *big.Int, commissionRate uint8, commissionMaxChangeRate uint8, withdrawAccount common.Address) (*types.Transaction, error) { + return _ValidatorManager.Contract.RegisterValidator(&_ValidatorManager.TransactOpts, assets, commissionRate, commissionMaxChangeRate, withdrawAccount) } -// RegisterValidator is a paid mutator transaction binding the contract method 0x8ee4b602. +// RegisterValidator is a paid mutator transaction binding the contract method 0xc5398584. // -// Solidity: function registerValidator(uint128 assets, uint8 commissionRate, uint8 commissionMaxChangeRate) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) RegisterValidator(assets *big.Int, commissionRate uint8, commissionMaxChangeRate uint8) (*types.Transaction, error) { - return _ValidatorManager.Contract.RegisterValidator(&_ValidatorManager.TransactOpts, assets, commissionRate, commissionMaxChangeRate) +// Solidity: function registerValidator(uint128 assets, uint8 commissionRate, uint8 commissionMaxChangeRate, address withdrawAccount) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) RegisterValidator(assets *big.Int, commissionRate uint8, commissionMaxChangeRate uint8, withdrawAccount common.Address) (*types.Transaction, error) { + return _ValidatorManager.Contract.RegisterValidator(&_ValidatorManager.TransactOpts, assets, commissionRate, commissionMaxChangeRate, withdrawAccount) } // Slash is a paid mutator transaction binding the contract method 0xbe995dc2. diff --git a/kroma-bindings/bindings/validatormanager_more.go b/kroma-bindings/bindings/validatormanager_more.go index 3bd1323a0..11da0b213 100644 --- a/kroma-bindings/bindings/validatormanager_more.go +++ b/kroma-bindings/bindings/validatormanager_more.go @@ -9,12 +9,11 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const ValidatorManagerStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/L1/ValidatorManager.sol:ValidatorManager\",\"label\":\"_nextPriorityValidator\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_address\"},{\"astId\":1001,\"contract\":\"contracts/L1/ValidatorManager.sol:ValidatorManager\",\"label\":\"_validatorTree\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_struct(Tree)1006_storage\"},{\"astId\":1002,\"contract\":\"contracts/L1/ValidatorManager.sol:ValidatorManager\",\"label\":\"_validatorInfo\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_mapping(t_address,t_struct(Validator)1007_storage)\"},{\"astId\":1003,\"contract\":\"contracts/L1/ValidatorManager.sol:ValidatorManager\",\"label\":\"_jail\",\"offset\":0,\"slot\":\"5\",\"type\":\"t_mapping(t_address,t_uint128)\"},{\"astId\":1004,\"contract\":\"contracts/L1/ValidatorManager.sol:ValidatorManager\",\"label\":\"_pendingChallengeReward\",\"offset\":0,\"slot\":\"6\",\"type\":\"t_mapping(t_uint256,t_uint128)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_mapping(t_address,t_struct(Validator)1007_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct IValidatorManager.Validator)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(Validator)1007_storage\"},\"t_mapping(t_address,t_uint128)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint128)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint128\"},\"t_mapping(t_address,t_uint32)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint32)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint32\"},\"t_mapping(t_uint256,t_uint128)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e uint128)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_uint128\"},\"t_mapping(t_uint32,t_struct(Node)1005_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint32 =\u003e struct BalancedWeightTree.Node)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint32\",\"value\":\"t_struct(Node)1005_storage\"},\"t_struct(Node)1005_storage\":{\"encoding\":\"inplace\",\"label\":\"struct BalancedWeightTree.Node\",\"numberOfBytes\":\"64\"},\"t_struct(Tree)1006_storage\":{\"encoding\":\"inplace\",\"label\":\"struct BalancedWeightTree.Tree\",\"numberOfBytes\":\"96\"},\"t_struct(Validator)1007_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IValidatorManager.Validator\",\"numberOfBytes\":\"32\"},\"t_uint120\":{\"encoding\":\"inplace\",\"label\":\"uint120\",\"numberOfBytes\":\"15\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint32\":{\"encoding\":\"inplace\",\"label\":\"uint32\",\"numberOfBytes\":\"4\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" +const ValidatorManagerStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/L1/ValidatorManager.sol:ValidatorManager\",\"label\":\"_nextPriorityValidator\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_address\"},{\"astId\":1001,\"contract\":\"contracts/L1/ValidatorManager.sol:ValidatorManager\",\"label\":\"_validatorTree\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_struct(Tree)1006_storage\"},{\"astId\":1002,\"contract\":\"contracts/L1/ValidatorManager.sol:ValidatorManager\",\"label\":\"_validatorInfo\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_mapping(t_address,t_struct(Validator)1007_storage)\"},{\"astId\":1003,\"contract\":\"contracts/L1/ValidatorManager.sol:ValidatorManager\",\"label\":\"_jail\",\"offset\":0,\"slot\":\"5\",\"type\":\"t_mapping(t_address,t_uint128)\"},{\"astId\":1004,\"contract\":\"contracts/L1/ValidatorManager.sol:ValidatorManager\",\"label\":\"_pendingChallengeReward\",\"offset\":0,\"slot\":\"6\",\"type\":\"t_mapping(t_uint256,t_uint128)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_mapping(t_address,t_struct(Validator)1007_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct IValidatorManager.Validator)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(Validator)1007_storage\"},\"t_mapping(t_address,t_uint128)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint128)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint128\"},\"t_mapping(t_address,t_uint32)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint32)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint32\"},\"t_mapping(t_uint256,t_uint128)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e uint128)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_uint128\"},\"t_mapping(t_uint32,t_struct(Node)1005_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint32 =\u003e struct BalancedWeightTree.Node)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint32\",\"value\":\"t_struct(Node)1005_storage\"},\"t_struct(Node)1005_storage\":{\"encoding\":\"inplace\",\"label\":\"struct BalancedWeightTree.Node\",\"numberOfBytes\":\"64\"},\"t_struct(Tree)1006_storage\":{\"encoding\":\"inplace\",\"label\":\"struct BalancedWeightTree.Tree\",\"numberOfBytes\":\"96\"},\"t_struct(Validator)1007_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IValidatorManager.Validator\",\"numberOfBytes\":\"64\"},\"t_uint120\":{\"encoding\":\"inplace\",\"label\":\"uint120\",\"numberOfBytes\":\"15\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint32\":{\"encoding\":\"inplace\",\"label\":\"uint32\",\"numberOfBytes\":\"4\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" var ValidatorManagerStorageLayout = new(solc.StorageLayout) -var ValidatorManagerDeployedBin = "0x608060405234801561001057600080fd5b50600436106102255760003560e01c80638ee4b6021161012a578063b91b2723116100bd578063cdff5e191161008c578063dff221b511610071578063dff221b5146106c0578063e0cc26a2146106f1578063e7816b7f1461072357600080fd5b8063cdff5e191461067c578063dea152541461069957600080fd5b8063b91b272314610297578063b9551f8214610611578063be11934714610656578063be995dc21461066957600080fd5b8063abeba449116100f9578063abeba449146104fe578063ac6c525114610525578063af6ca7621461059a578063b2653fe3146105ea57600080fd5b80638ee4b6021461048a578063970531c11461049d5780639d6b2e37146104d85780639f8a13d7146104eb57600080fd5b80633ee4d4a3116101bd57806356b65e971161018c5780636874e042116101715780636874e0421461043d57806388576dc914610464578063891aab741461047757600080fd5b806356b65e97146103dd5780635bab847f1461042a57600080fd5b80633ee4d4a31461031f57806342223ae9146103465780634cca5e6c1461036d57806354fd4d501461039457600080fd5b806322009af6116101f957806322009af6146102c6578063263a3402146102ed57806330ccebb5146102f75780633a5490461461031757600080fd5b80621c2ff61461022a5780630763fa7e1461026e578063110d6069146102975780631796e52e1461029f575b600080fd5b6102517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610276602881565b6040516fffffffffffffffffffffffffffffffff9091168152602001610265565b610276606481565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6102f561074a565b005b61030a6103053660046148c8565b6107d5565b6040516102659190614914565b610251610ade565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6103d06040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102659190614955565b61041a6103eb3660046148c8565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff16151590565b6040519015158152602001610265565b6102f56104383660046149d6565b610c0c565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b6102f5610472366004614a25565b610d81565b6102f56104853660046148c8565b611054565b6102f5610498366004614a5e565b611167565b6102766104ab3660046148c8565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff1690565b6102f56104e63660046149d6565b6114ed565b61041a6104f93660046148c8565b611764565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b61057a6105333660046148c8565b6001600160a01b031660009081526003602090815260408083205463ffffffff168352600290915290206001015461010090046effffffffffffffffffffffffffffff1690565b6040516effffffffffffffffffffffffffffff9091168152602001610265565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff1661057a565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b61064461061f3660046148c8565b6001600160a01b03166000908152600460205260409020546301000000900460ff1690565b60405160ff9091168152602001610265565b6102f5610664366004614aa3565b611797565b6102f5610677366004614abc565b6118de565b610684611cce565b60405163ffffffff9091168152602001610265565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6106446106ce3660046148c8565b6001600160a01b0316600090815260046020526040902054610100900460ff1690565b6106446106ff3660046148c8565b6001600160a01b031660009081526004602052604090205462010000900460ff1690565b6102767f000000000000000000000000000000000000000000000000000000000000000081565b6003610755336107d5565b6005811115610766576107666148e5565b1415806107935750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b156107ca576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107d333611cf3565b565b6001600160a01b03811660009081526004602052604081205460ff166107fd57506000919050565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f00000000000000000000000000000000000000000000000000000000000000009091169063981cee5390602401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190614afe565b6fffffffffffffffffffffffffffffffff1610156108f657506001919050565b6001600160a01b03828116600081815260036020526040908190205490517f12188543000000000000000000000000000000000000000000000000000000008152600481019290925263ffffffff161515917f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f000000000000000000000000000000000000000000000000000000000000000090911690631218854390602401602060405180830381865afa1580156109c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190614afe565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8e9190614afe565b610a989190614b4a565b6fffffffffffffffffffffffffffffffff161015610ac75780610abe5750600292915050565b50600492915050565b80610ad55750600392915050565b50600592915050565b600080546001600160a01b031615610be75760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b749190614b7b565b9050804210610bd6576000610b898242614b94565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16811115610bd4576001600160a01b039250505090565b505b50506000546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610c17836107d5565b9050818015610c5257506001816005811115610c3557610c356148e5565b1480610c5257506004816005811115610c5057610c506148e5565b145b15610cb057610c62600184611deb565b15610cab57826001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051610ca291815260200190565b60405180910390a25b505050565b6004816005811115610cc457610cc46148e5565b10610cab576040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038085166004830152610d7b9185917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d729190614afe565b60019190611f8e565b50505050565b6002610d8c336107d5565b6005811115610d9d57610d9d6148e5565b1080610dc95750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610e00576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260046020526040902080544290610e58907f00000000000000000000000000000000000000000000000000000000000000009064010000000090046fffffffffffffffffffffffffffffffff16614bab565b6fffffffffffffffffffffffffffffffff161115610ea2576040517f7d7a4d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115610ee0576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460ff620100009091048116908316819003610f29576040517f150393f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160ff168460ff1611610f4757610f428483614bdf565b610f51565b610f518285614bdf565b835490915060ff630100000090910481169082161115610f9d576040517f9ed4fa4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffff00000000000000000000000000000000ff00ffff166201000060ff8681169182027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1692909217640100000000426fffffffffffffffffffffffffffffffff1602178555604080519285168352602083019190915233917fc0b29b9b824f7a62d93fde5832bb8307fd62594d0a08d96d533407a0a147ec48910160405180910390a250505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110b6576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006110c0610ade565b90506001600160a01b03808216148015906110ed5750806001600160a01b0316826001600160a01b031614155b15611124576040517fc625317600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61112d82611764565b611163576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000611172336107d5565b6005811115611183576111836148e5565b146111ba576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff161015611238576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115611276576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff821611156112b4576040517f4143808b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526004602081905260409182902080546fffffffffffffffffffffffffffffffff4216640100000000027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff60ff888116630100000002919091167fffffffffffffffffffffffff0000000000000000000000000000000000ffffff918a1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0090941693909317600117169190911717815591517fd7f1a3d800000000000000000000000000000000000000000000000000000000815291927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263d7f1a3d8926113fa92918991016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b6020604051808303816000875af1158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614afe565b506fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116908516108015906114865761148633611cf3565b60408051821515815260ff86811660208301528516818301526fffffffffffffffffffffffffffffffff87166060820152905133917f04ba0c4d7cbac9138f7b73ec9fef796e4ad320bf5fb204f080f81fd59c2d48b9919081900360800190a25050505050565b6001600160a01b0382166000908152600560205260409020546fffffffffffffffffffffffffffffffff1661154e576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015611625577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d69190614c02565b6001600160a01b0316336001600160a01b031614611620576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d6565b336001600160a01b03831614611667576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260056020526040902054426fffffffffffffffffffffffffffffffff90911611156116cd576040517f1dfc20f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d6826122a3565b6001600160a01b03821660008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a26003611745836107d5565b6005811115611756576117566148e5565b036111635761116382611cf3565b60006005611771836107d5565b6005811115611782576117826148e5565b0361178f57506001919050565b506000919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117f9576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61180161230b565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015611883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a79190614c02565b6000549091506001600160a01b03908116908216036118ce576118c9816122a3565b6118d6565b6118d6612a46565b611163612b1b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561193c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119609190614c02565b6001600160a01b0316336001600160a01b0316146119aa576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052600160448401529182917f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a619190614c1f565b90925090506001600160a01b038316857f1237821480ce4d75f917bc39d1641eb17a5e09a2d5bf982cdd8cb2561aa28e68611a9c8486614bab565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390a3611ac983612db5565b847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4c9190614b7b565b11611ba457600085815260066020526040902080546fffffffffffffffffffffffffffffffff8082168401167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055611cc7565b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c679190614c1f565b5050611c74846000610c0c565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b0385169086907fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa149060200160405180910390a35b5050505050565b600154600090611cee9063ffffffff640100000000820481169116614c4e565b905090565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152611da59183917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015611d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9c9190614afe565b60019190612ed8565b806001600160a01b03167ff33a24861b76047debce215c7ae4915a9befc5d870e97efbd4152df23c72112a42604051611de091815260200190565b60405180910390a250565b6001600160a01b038116600090815260028301602052604081205463ffffffff16808203611e1d576000915050611f88565b6001600160a01b03831660009081526002850160209081526040808320805463ffffffff1916905563ffffffff8481168452600180890190935292208054910154740100000000000000000000000000000000000000009091049091169061010090046effffffffffffffffffffffffffffff165b63ffffffff821615611f345763ffffffff91821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690611e92565b611f3e868461345d565b50508354600163ffffffff64010000000080840482168301909116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9092169190911785559150505b92915050565b6001600160a01b038216600090815260028401602052604081205463ffffffff16808203611fc057600091505061229c565b63ffffffff80821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff8781166101008181027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff85161790945593549290910416927401000000000000000000000000000000000000000090910416908210156121705763ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116848803700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff908116820116909202179091555b63ffffffff8216156121605763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168601909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905554740100000000000000000000000000000000000000009004909116906120bf565b5061216b8784613be9565b612294565b63ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116878503700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff90811682900316909202179091555b63ffffffff8216156122895763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905554740100000000000000000000000000000000000000009004909116906121e7565b506122948784613df5565b600193505050505b9392505050565b6001600160a01b038116600090815260046020526040902054610100900460ff1615612308576001600160a01b038116600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561236c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123909190614b7b565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124169190614b7b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249a9190614c02565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b81526004016124c791815260200190565b602060405180830381865afa1580156124e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125089190614c6b565b6125155760009250505090565b6000805b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1610801561256c5750828411155b15612985576040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126139190614c6b565b15612985576040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015612696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ba9190614c02565b905060008060006126ca84614220565b6040517fad4294510000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526fffffffffffffffffffffffffffffffff858116602484015284811660448401528316606483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063ad42945190608401600060405180830381600087803b15801561277857600080fd5b505af115801561278c573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8581168252878116602083015286168183015290516001600160a01b03881693508a92507fd74a44a8cd6c73740a70271e07ee96d8a495ff30037ae6381cbcdb8fe7f2a1ea9181900360600190a36000878152600660205260409020546fffffffffffffffffffffffffffffffff168015612965576040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af11580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128db9190614c1f565b505060008881526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905590516fffffffffffffffffffffffffffffffff831681526001600160a01b038716918a917fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa14910160405180910390a35b612970856000610c0c565b87600101975085600101955050505050612519565b6fffffffffffffffffffffffffffffffff821615612a3b576040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639902cdc090602401600060405180830381600087803b158015612a1857600080fd5b505af1158015612a2c573d6000803e3d6000fd5b50505050600194505050505090565b600094505050505090565b6000546001600160a01b0316612a5857565b600080546001600160a01b03168152600460205260409020547f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1661010090910460ff1610612ac7576000546107d3906001600160a01b0316612db5565b600080546001600160a01b03168152600460205260409020805460ff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055565b6001805468010000000000000000900463ffffffff1660009081526002602052604081209091015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bee9190614b7b565b90506000826effffffffffffffffffffffffffffff16118015612c115750600081115b15612d895760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae557612c52600185614b94565b6040518263ffffffff1660e01b8152600401612c7091815260200190565b608060405180830381865afa158015612c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb19190614c88565b90506000838260200151434144600143612ccb9190614b94565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c612d3c9190614d5a565b9050612d49600182614309565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055506111639050565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b6000612df36fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614daf565b6001600160a01b03831660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8616908117909155915191825292935090917f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a2612e8c600183611deb565b1561116357816001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051612ecc91815260200190565b60405180910390a25050565b60006040518060e00160405280846001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600115158152602001836effffffffffffffffffffffffffffff168152602001836effffffffffffffffffffffffffffff16815250905083600001600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff1602179055505060008460000160009054906101000a900463ffffffff169050818560010160008363ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548160ff02191690831515021790555060a08201518160010160016101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555060c08201518160010160106101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555090505080856002016000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055508460000160089054906101000a900463ffffffff1663ffffffff166000036131b357845463ffffffff90911668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff90911617909355505050565b845468010000000000000000900463ffffffff165b63ffffffff808216600090815260018089016020526040822090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168b01909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905580549092600160c01b9091041690036132ef5763ffffffff838116600081815260018a016020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000938616939093029290921790915581547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b9091021781556132e68784613be9565b50505050505050565b8054600160e01b900463ffffffff166000036133c55763ffffffff838116600081815260018a8101602052604090912080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000948716949094029390931783559190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b9091021781556132e68784613be9565b805463ffffffff600160e01b8204811660009081526001808b016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff70010000000000000000000000000000000092839004811692909104161115613445578054600160e01b900463ffffffff169150613457565b8054600160c01b900463ffffffff1691505b506131c8565b63ffffffff8082166000908152600184016020526040812080549092600160c01b909104169003613740578054600160e01b900463ffffffff166000036135ef57805474010000000000000000000000000000000000000000900463ffffffff166000036134f05782547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1683556135ab565b600181015460ff161561355857805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1690556135ab565b805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555b5063ffffffff1660009081526001918201602052604081209081550180547fff00000000000000000000000000000000000000000000000000000000000000169055565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613be3565b8054600160e01b900463ffffffff166000036138a757805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613be3565b805463ffffffff600160e01b82048116600090815260018087016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff61010092839004811692909104161115613a7557805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff821681178355600160e01b9096048c168a52868a20909801549254700100000000000000000000000000000000908190048316938190048316939093019091169091027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951791909117909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613be3565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559354600160c01b9096048c168a52868a2090980154700100000000000000000000000000000000908190048316958190048316959095019091169093027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091167fff000000000000000000000000000000000000000000000000000000000000ff90961695909517949094179055915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116905b5061345d565b63ffffffff80821660009081526001840160205260408082208054740100000000000000000000000000000000000000009004909316825290205b815474010000000000000000000000000000000000000000900463ffffffff1615801590613c775750600180820154908301546effffffffffffffffffffffffffffff6101009283900481169290910416115b15610d7b57815481547fffffffffffffffffffffffff00000000000000000000000000000000000000008083166001600160a01b03928316178555835416918116919091178255600180840180548483018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117875584549584900483169384029516949094179092558354929003700100000000000000000000000000000000808404831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790558354821660009081526002870160209081526040808320805463ffffffff998a1663ffffffff199182161790915587549654909516835280832080549095167401000000000000000000000000000000000000000096879004891617909455945484900486168082529187019094528184208054939093049094168352909120613c24565b5b63ffffffff8082166000908152600180850160205260408083208054600160e01b810486168552828520840154600160c01b90910490951684529220015490916effffffffffffffffffffffffffffff61010091829004811691909204909116111561403e57600180820154825463ffffffff600160c01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610cab57805463ffffffff600160c01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613df6565b600180820154825463ffffffff600160e01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610cab57805463ffffffff600160e01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613df6565b6001600160a01b0381166000908152600460205260408120548190819062010000900460ff1681614250866144d8565b90506000806142956fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000085011685606461460e565b90506142d86fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660648681039061460e565b91506142fb6fffffffffffffffffffffffffffffffff841660648681039061460e565b919891975095509350505050565b815460009068010000000000000000900463ffffffff165b63ffffffff80821660009081526001808701602052604080832054600160c01b9004909316825291902001546effffffffffffffffffffffffffffff8085167001000000000000000000000000000000009092041611156143a25763ffffffff9081166000908152600185016020526040902054600160c01b900416614321565b63ffffffff8181166000818152600187810160205260408083208054600160c01b9004909516835282208101549290915291909101547001000000000000000000000000000000009091046effffffffffffffffffffffffffffff9081169094039384811661010090920416111561443b5763ffffffff1660009081526001840160205260409020546001600160a01b03169050611f88565b63ffffffff818116600090815260018681016020526040808320808301549054600160e01b9004909416835290912001546101009091046effffffffffffffffffffffffffffff908116909403938481167001000000000000000000000000000000009092041611156144ce5763ffffffff9081166000908152600185016020526040902054600160e01b900416614321565b6000915050611f88565b6040517f913f1a9f0000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063913f1a9f90602401602060405180830381865afa15801561455c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145809190614afe565b905060006145c36fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166028606461460e565b9050614606816fffffffffffffffffffffffffffffffff16650100000000006145ff856fffffffffffffffffffffffffffffffff1660646146c2565b9190614789565b949350505050565b6000838302608081901c6fffffffffffffffffffffffffffffffff841611614697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f770000000060448201526064015b60405180910390fd5b826fffffffffffffffffffffffffffffffff1681816146b8576146b8614d2b565b0495945050505050565b60008083831080156146db57600181146146ee576146fd565b65010000000000850284900491506146fd565b65010000000000840285900491505b506402ef6c3406818002602890811c808402821c808202831c808302841c808402851c938402851c95909502841c641da06a6e33909502841c6455232d2bb2909202841c640d4ca0c283909302841c643177d95571909102841c64fffe4bcada90960290931c9490940191909101039190910303905081831115611f88576501921fb544430392915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036147e1578382816147d7576147d7614d2b565b049250505061229c565b80841161484a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f770000000000000000000000604482015260640161468e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b038116811461230857600080fd5b6000602082840312156148da57600080fd5b813561229c816148b3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016006831061494f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b8181101561498257858101830151858201604001528201614966565b81811115614994576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b801515811461230857600080fd5b600080604083850312156149e957600080fd5b82356149f4816148b3565b91506020830135614a04816149c8565b809150509250929050565b803560ff81168114614a2057600080fd5b919050565b600060208284031215614a3757600080fd5b61229c82614a0f565b6fffffffffffffffffffffffffffffffff8116811461230857600080fd5b600080600060608486031215614a7357600080fd5b8335614a7e81614a40565b9250614a8c60208501614a0f565b9150614a9a60408501614a0f565b90509250925092565b600060208284031215614ab557600080fd5b5035919050565b600080600060608486031215614ad157600080fd5b833592506020840135614ae3816148b3565b91506040840135614af3816148b3565b809150509250925092565b600060208284031215614b1057600080fd5b815161229c81614a40565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006fffffffffffffffffffffffffffffffff83811690831681811015614b7357614b73614b1b565b039392505050565b600060208284031215614b8d57600080fd5b5051919050565b600082821015614ba657614ba6614b1b565b500390565b60006fffffffffffffffffffffffffffffffff808316818516808303821115614bd657614bd6614b1b565b01949350505050565b600060ff821660ff841680821015614bf957614bf9614b1b565b90039392505050565b600060208284031215614c1457600080fd5b815161229c816148b3565b60008060408385031215614c3257600080fd5b8251614c3d81614a40565b6020840151909250614a0481614a40565b600063ffffffff83811690831681811015614b7357614b73614b1b565b600060208284031215614c7d57600080fd5b815161229c816149c8565b600060808284031215614c9a57600080fd5b6040516080810181811067ffffffffffffffff82111715614ce4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251614cf2816148b3565b8152602083810151908201526040830151614d0c81614a40565b60408201526060830151614d1f81614a40565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006effffffffffffffffffffffffffffff80841680614da3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910692915050565b60008219821115614dc257614dc2614b1b565b50019056fea164736f6c634300080f000a" - +var ValidatorManagerDeployedBin = "0x608060405234801561001057600080fd5b50600436106102405760003560e01c8063970531c111610145578063be119347116100bd578063cdff5e191161008c578063dff221b511610071578063dff221b51461070a578063e0cc26a21461073b578063e7816b7f1461076d57600080fd5b8063cdff5e19146106c6578063dea15254146106e357600080fd5b8063be1193471461065e578063be995dc214610671578063c2d9b68414610684578063c5398584146106b357600080fd5b8063ac6c525111610114578063b2653fe3116100f9578063b2653fe3146105f2578063b91b2723146102b2578063b9551f821461061957600080fd5b8063ac6c52511461052d578063af6ca762146105a257600080fd5b8063970531c1146104a55780639d6b2e37146104e05780639f8a13d7146104f3578063abeba4491461050657600080fd5b80633ee4d4a3116101d857806356b65e97116101a75780636874e0421161018c5780636874e0421461045857806388576dc91461047f578063891aab741461049257600080fd5b806356b65e97146103f85780635bab847f1461044557600080fd5b80633ee4d4a31461033a57806342223ae9146103615780634cca5e6c1461038857806354fd4d50146103af57600080fd5b806322009af61161021457806322009af6146102e1578063263a34021461030857806330ccebb5146103125780633a5490461461033257600080fd5b80621c2ff6146102455780630763fa7e14610289578063110d6069146102b25780631796e52e146102ba575b600080fd5b61026c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610291602881565b6040516fffffffffffffffffffffffffffffffff9091168152602001610280565b610291606481565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b610310610794565b005b61032561032036600461496b565b61081f565b60405161028091906149b7565b61026c610b28565b61026c7f000000000000000000000000000000000000000000000000000000000000000081565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b6103eb6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028091906149f8565b61043561040636600461496b565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff16151590565b6040519015158152602001610280565b610310610453366004614a79565b610c56565b61026c7f000000000000000000000000000000000000000000000000000000000000000081565b61031061048d366004614ac8565b610dcb565b6103106104a036600461496b565b61109e565b6102916104b336600461496b565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff1690565b6103106104ee366004614a79565b6111b1565b61043561050136600461496b565b611428565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b61058261053b36600461496b565b6001600160a01b031660009081526003602090815260408083205463ffffffff168352600290915290206001015461010090046effffffffffffffffffffffffffffff1690565b6040516effffffffffffffffffffffffffffff9091168152602001610280565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16610582565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b61064c61062736600461496b565b6001600160a01b03166000908152600460205260409020546301000000900460ff1690565b60405160ff9091168152602001610280565b61031061066c366004614ae3565b61145b565b61031061067f366004614afc565b6115a2565b61026c61069236600461496b565b6001600160a01b039081166000908152600460205260409020600101541690565b6103106106c1366004614b5c565b611992565b6106ce611d71565b60405163ffffffff9091168152602001610280565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b61064c61071836600461496b565b6001600160a01b0316600090815260046020526040902054610100900460ff1690565b61064c61074936600461496b565b6001600160a01b031660009081526004602052604090205462010000900460ff1690565b6102917f000000000000000000000000000000000000000000000000000000000000000081565b600361079f3361081f565b60058111156107b0576107b0614988565b1415806107dd5750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610814576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081d33611d96565b565b6001600160a01b03811660009081526004602052604081205460ff1661084757506000919050565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f00000000000000000000000000000000000000000000000000000000000000009091169063981cee5390602401602060405180830381865afa1580156108fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109209190614bb4565b6fffffffffffffffffffffffffffffffff16101561094057506001919050565b6001600160a01b03828116600081815260036020526040908190205490517f12188543000000000000000000000000000000000000000000000000000000008152600481019290925263ffffffff161515917f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f000000000000000000000000000000000000000000000000000000000000000090911690631218854390602401602060405180830381865afa158015610a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a359190614bb4565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad89190614bb4565b610ae29190614c00565b6fffffffffffffffffffffffffffffffff161015610b115780610b085750600292915050565b50600492915050565b80610b1f5750600392915050565b50600592915050565b600080546001600160a01b031615610c315760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190614c31565b9050804210610c20576000610bd38242614c4a565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16811115610c1e576001600160a01b039250505090565b505b50506000546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610c618361081f565b9050818015610c9c57506001816005811115610c7f57610c7f614988565b1480610c9c57506004816005811115610c9a57610c9a614988565b145b15610cfa57610cac600184611e8e565b15610cf557826001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051610cec91815260200190565b60405180910390a25b505050565b6004816005811115610d0e57610d0e614988565b10610cf5576040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038085166004830152610dc59185917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbc9190614bb4565b60019190612031565b50505050565b6002610dd63361081f565b6005811115610de757610de7614988565b1080610e135750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610e4a576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260046020526040902080544290610ea2907f00000000000000000000000000000000000000000000000000000000000000009064010000000090046fffffffffffffffffffffffffffffffff16614c61565b6fffffffffffffffffffffffffffffffff161115610eec576040517f7d7a4d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115610f2a576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460ff620100009091048116908316819003610f73576040517f150393f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160ff168460ff1611610f9157610f8c8483614c95565b610f9b565b610f9b8285614c95565b835490915060ff630100000090910481169082161115610fe7576040517f9ed4fa4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffff00000000000000000000000000000000ff00ffff166201000060ff8681169182027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1692909217640100000000426fffffffffffffffffffffffffffffffff1602178555604080519285168352602083019190915233917fc0b29b9b824f7a62d93fde5832bb8307fd62594d0a08d96d533407a0a147ec48910160405180910390a250505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611100576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061110a610b28565b90506001600160a01b03808216148015906111375750806001600160a01b0316826001600160a01b031614155b1561116e576040517fc625317600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117782611428565b6111ad576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6001600160a01b0382166000908152600560205260409020546fffffffffffffffffffffffffffffffff16611212576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156112e9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a9190614cb8565b6001600160a01b0316336001600160a01b0316146112e4576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61139a565b336001600160a01b0383161461132b576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260056020526040902054426fffffffffffffffffffffffffffffffff9091161115611391576040517f1dfc20f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61139a82612346565b6001600160a01b03821660008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a260036114098361081f565b600581111561141a5761141a614988565b036111ad576111ad82611d96565b600060056114358361081f565b600581111561144657611446614988565b0361145357506001919050565b506000919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114bd576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c56123ae565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190614cb8565b6000549091506001600160a01b03908116908216036115925761158d81612346565b61159a565b61159a612ae9565b6111ad612bbe565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116249190614cb8565b6001600160a01b0316336001600160a01b03161461166e576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052600160448401529182917f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117259190614cd5565b90925090506001600160a01b038316857f1237821480ce4d75f917bc39d1641eb17a5e09a2d5bf982cdd8cb2561aa28e686117608486614c61565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390a361178d83612e58565b847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118109190614c31565b1161186857600085815260066020526040902080546fffffffffffffffffffffffffffffffff8082168401167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617905561198b565b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b9190614cd5565b5050611938846000610c56565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b0385169086907fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa149060200160405180910390a35b5050505050565b600061199d3361081f565b60058111156119ae576119ae614988565b146119e5576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff161015611a63576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff84161115611aa1576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115611adf576040517f4143808b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611b1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526004602081905260409182902080546fffffffffffffffffffffffffffffffff428116640100000000027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff60ff8a8116630100000002919091167fffffffffffffffffffffffff0000000000000000000000000000000000ffffff918c1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00909516949094176001908117919091169390931717835590820180546001600160a01b038881167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790915593517fd7f1a3d80000000000000000000000000000000000000000000000000000000081529283019490945292871660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063d7f1a3d8906044016020604051808303816000875af1158015611c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc09190614bb4565b506fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690861610801590611d0957611d0933611d96565b60408051821515815260ff87811660208301528616818301526fffffffffffffffffffffffffffffffff88166060820152905133917f04ba0c4d7cbac9138f7b73ec9fef796e4ad320bf5fb204f080f81fd59c2d48b9919081900360800190a2505050505050565b600154600090611d919063ffffffff640100000000820481169116614d04565b905090565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152611e489183917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f9190614bb4565b60019190612f7b565b806001600160a01b03167ff33a24861b76047debce215c7ae4915a9befc5d870e97efbd4152df23c72112a42604051611e8391815260200190565b60405180910390a250565b6001600160a01b038116600090815260028301602052604081205463ffffffff16808203611ec057600091505061202b565b6001600160a01b03831660009081526002850160209081526040808320805463ffffffff1916905563ffffffff8481168452600180890190935292208054910154740100000000000000000000000000000000000000009091049091169061010090046effffffffffffffffffffffffffffff165b63ffffffff821615611fd75763ffffffff91821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690611f35565b611fe18684613500565b50508354600163ffffffff64010000000080840482168301909116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9092169190911785559150505b92915050565b6001600160a01b038216600090815260028401602052604081205463ffffffff1680820361206357600091505061233f565b63ffffffff80821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff8781166101008181027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff85161790945593549290910416927401000000000000000000000000000000000000000090910416908210156122135763ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116848803700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff908116820116909202179091555b63ffffffff8216156122035763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168601909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612162565b5061220e8784613c8c565b612337565b63ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116878503700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff90811682900316909202179091555b63ffffffff82161561232c5763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff909116179055547401000000000000000000000000000000000000000090049091169061228a565b506123378784613e98565b600193505050505b9392505050565b6001600160a01b038116600090815260046020526040902054610100900460ff16156123ab576001600160a01b038116600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124339190614c31565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b99190614c31565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253d9190614cb8565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161256a91815260200190565b602060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab9190614d21565b6125b85760009250505090565b6000805b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1610801561260f5750828411155b15612a28576040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b69190614d21565b15612a28576040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d9190614cb8565b9050600080600061276d846142c3565b6040517fad4294510000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526fffffffffffffffffffffffffffffffff858116602484015284811660448401528316606483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063ad42945190608401600060405180830381600087803b15801561281b57600080fd5b505af115801561282f573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8581168252878116602083015286168183015290516001600160a01b03881693508a92507fd74a44a8cd6c73740a70271e07ee96d8a495ff30037ae6381cbcdb8fe7f2a1ea9181900360600190a36000878152600660205260409020546fffffffffffffffffffffffffffffffff168015612a08576040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af115801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e9190614cd5565b505060008881526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905590516fffffffffffffffffffffffffffffffff831681526001600160a01b038716918a917fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa14910160405180910390a35b612a13856000610c56565b876001019750856001019550505050506125bc565b6fffffffffffffffffffffffffffffffff821615612ade576040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639902cdc090602401600060405180830381600087803b158015612abb57600080fd5b505af1158015612acf573d6000803e3d6000fd5b50505050600194505050505090565b600094505050505090565b6000546001600160a01b0316612afb57565b600080546001600160a01b03168152600460205260409020547f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1661010090910460ff1610612b6a5760005461081d906001600160a01b0316612e58565b600080546001600160a01b03168152600460205260409020805460ff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055565b6001805468010000000000000000900463ffffffff1660009081526002602052604081209091015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c919190614c31565b90506000826effffffffffffffffffffffffffffff16118015612cb45750600081115b15612e2c5760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae557612cf5600185614c4a565b6040518263ffffffff1660e01b8152600401612d1391815260200190565b608060405180830381865afa158015612d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d549190614d3e565b90506000838260200151434144600143612d6e9190614c4a565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c612ddf9190614e10565b9050612dec6001826143ac565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055506111ad9050565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b6000612e966fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614e65565b6001600160a01b03831660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8616908117909155915191825292935090917f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a2612f2f600183611e8e565b156111ad57816001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051612f6f91815260200190565b60405180910390a25050565b60006040518060e00160405280846001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600115158152602001836effffffffffffffffffffffffffffff168152602001836effffffffffffffffffffffffffffff16815250905083600001600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff1602179055505060008460000160009054906101000a900463ffffffff169050818560010160008363ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548160ff02191690831515021790555060a08201518160010160016101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555060c08201518160010160106101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555090505080856002016000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055508460000160089054906101000a900463ffffffff1663ffffffff1660000361325657845463ffffffff90911668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff90911617909355505050565b845468010000000000000000900463ffffffff165b63ffffffff808216600090815260018089016020526040822090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168b01909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905580549092600160c01b9091041690036133925763ffffffff838116600081815260018a016020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000938616939093029290921790915581547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b9091021781556133898784613c8c565b50505050505050565b8054600160e01b900463ffffffff166000036134685763ffffffff838116600081815260018a8101602052604090912080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000948716949094029390931783559190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b9091021781556133898784613c8c565b805463ffffffff600160e01b8204811660009081526001808b016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff700100000000000000000000000000000000928390048116929091041611156134e8578054600160e01b900463ffffffff1691506134fa565b8054600160c01b900463ffffffff1691505b5061326b565b63ffffffff8082166000908152600184016020526040812080549092600160c01b9091041690036137e3578054600160e01b900463ffffffff1660000361369257805474010000000000000000000000000000000000000000900463ffffffff166000036135935782547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff16835561364e565b600181015460ff16156135fb57805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16905561364e565b805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555b5063ffffffff1660009081526001918201602052604081209081550180547fff00000000000000000000000000000000000000000000000000000000000000169055565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613c86565b8054600160e01b900463ffffffff1660000361394a57805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613c86565b805463ffffffff600160e01b82048116600090815260018087016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff61010092839004811692909104161115613b1857805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff821681178355600160e01b9096048c168a52868a20909801549254700100000000000000000000000000000000908190048316938190048316939093019091169091027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951791909117909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613c86565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559354600160c01b9096048c168a52868a2090980154700100000000000000000000000000000000908190048316958190048316959095019091169093027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091167fff000000000000000000000000000000000000000000000000000000000000ff90961695909517949094179055915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116905b50613500565b63ffffffff80821660009081526001840160205260408082208054740100000000000000000000000000000000000000009004909316825290205b815474010000000000000000000000000000000000000000900463ffffffff1615801590613d1a5750600180820154908301546effffffffffffffffffffffffffffff6101009283900481169290910416115b15610dc557815481547fffffffffffffffffffffffff00000000000000000000000000000000000000008083166001600160a01b03928316178555835416918116919091178255600180840180548483018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117875584549584900483169384029516949094179092558354929003700100000000000000000000000000000000808404831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790558354821660009081526002870160209081526040808320805463ffffffff998a1663ffffffff199182161790915587549654909516835280832080549095167401000000000000000000000000000000000000000096879004891617909455945484900486168082529187019094528184208054939093049094168352909120613cc7565b5b63ffffffff8082166000908152600180850160205260408083208054600160e01b810486168552828520840154600160c01b90910490951684529220015490916effffffffffffffffffffffffffffff6101009182900481169190920490911611156140e157600180820154825463ffffffff600160c01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610cf557805463ffffffff600160c01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613e99565b600180820154825463ffffffff600160e01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610cf557805463ffffffff600160e01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613e99565b6001600160a01b0381166000908152600460205260408120548190819062010000900460ff16816142f38661457b565b90506000806143386fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008501168560646146b1565b905061437b6fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166064868103906146b1565b915061439e6fffffffffffffffffffffffffffffffff84166064868103906146b1565b919891975095509350505050565b815460009068010000000000000000900463ffffffff165b63ffffffff80821660009081526001808701602052604080832054600160c01b9004909316825291902001546effffffffffffffffffffffffffffff8085167001000000000000000000000000000000009092041611156144455763ffffffff9081166000908152600185016020526040902054600160c01b9004166143c4565b63ffffffff8181166000818152600187810160205260408083208054600160c01b9004909516835282208101549290915291909101547001000000000000000000000000000000009091046effffffffffffffffffffffffffffff908116909403938481166101009092041611156144de5763ffffffff1660009081526001840160205260409020546001600160a01b0316905061202b565b63ffffffff818116600090815260018681016020526040808320808301549054600160e01b9004909416835290912001546101009091046effffffffffffffffffffffffffffff908116909403938481167001000000000000000000000000000000009092041611156145715763ffffffff9081166000908152600185016020526040902054600160e01b9004166143c4565b600091505061202b565b6040517f913f1a9f0000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063913f1a9f90602401602060405180830381865afa1580156145ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146239190614bb4565b905060006146666fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602860646146b1565b90506146a9816fffffffffffffffffffffffffffffffff16650100000000006146a2856fffffffffffffffffffffffffffffffff166064614765565b919061482c565b949350505050565b6000838302608081901c6fffffffffffffffffffffffffffffffff84161161473a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f770000000060448201526064015b60405180910390fd5b826fffffffffffffffffffffffffffffffff16818161475b5761475b614de1565b0495945050505050565b600080838310801561477e5760018114614791576147a0565b65010000000000850284900491506147a0565b65010000000000840285900491505b506402ef6c3406818002602890811c808402821c808202831c808302841c808402851c938402851c95909502841c641da06a6e33909502841c6455232d2bb2909202841c640d4ca0c283909302841c643177d95571909102841c64fffe4bcada90960290931c949094019190910103919091030390508183111561202b576501921fb544430392915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036148845783828161487a5761487a614de1565b049250505061233f565b8084116148ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401614731565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03811681146123ab57600080fd5b60006020828403121561497d57600080fd5b813561233f81614956565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600683106149f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b81811015614a2557858101830151858201604001528201614a09565b81811115614a37576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b80151581146123ab57600080fd5b60008060408385031215614a8c57600080fd5b8235614a9781614956565b91506020830135614aa781614a6b565b809150509250929050565b803560ff81168114614ac357600080fd5b919050565b600060208284031215614ada57600080fd5b61233f82614ab2565b600060208284031215614af557600080fd5b5035919050565b600080600060608486031215614b1157600080fd5b833592506020840135614b2381614956565b91506040840135614b3381614956565b809150509250925092565b6fffffffffffffffffffffffffffffffff811681146123ab57600080fd5b60008060008060808587031215614b7257600080fd5b8435614b7d81614b3e565b9350614b8b60208601614ab2565b9250614b9960408601614ab2565b91506060850135614ba981614956565b939692955090935050565b600060208284031215614bc657600080fd5b815161233f81614b3e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006fffffffffffffffffffffffffffffffff83811690831681811015614c2957614c29614bd1565b039392505050565b600060208284031215614c4357600080fd5b5051919050565b600082821015614c5c57614c5c614bd1565b500390565b60006fffffffffffffffffffffffffffffffff808316818516808303821115614c8c57614c8c614bd1565b01949350505050565b600060ff821660ff841680821015614caf57614caf614bd1565b90039392505050565b600060208284031215614cca57600080fd5b815161233f81614956565b60008060408385031215614ce857600080fd5b8251614cf381614b3e565b6020840151909250614aa781614b3e565b600063ffffffff83811690831681811015614c2957614c29614bd1565b600060208284031215614d3357600080fd5b815161233f81614a6b565b600060808284031215614d5057600080fd5b6040516080810181811067ffffffffffffffff82111715614d9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251614da881614956565b8152602083810151908201526040830151614dc281614b3e565b60408201526060830151614dd581614b3e565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006effffffffffffffffffffffffffffff80841680614e59577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910692915050565b60008219821115614e7857614e78614bd1565b50019056fea164736f6c634300080f000a" func init() { if err := json.Unmarshal([]byte(ValidatorManagerStorageLayoutJSON), ValidatorManagerStorageLayout); err != nil { diff --git a/kroma-validator/cmd/main.go b/kroma-validator/cmd/main.go index e53294117..4ad71fcba 100644 --- a/kroma-validator/cmd/main.go +++ b/kroma-validator/cmd/main.go @@ -64,6 +64,7 @@ func main() { cmd.TokenAmountFlag, cmd.CommissionRateFlag, cmd.CommissionMaxChangeRateFlag, + cmd.WithdrawAccountFlag, }, Action: cmd.Register, }, diff --git a/kroma-validator/cmd/validator/cmd.go b/kroma-validator/cmd/validator/cmd.go index e762541a1..c09312418 100644 --- a/kroma-validator/cmd/validator/cmd.go +++ b/kroma-validator/cmd/validator/cmd.go @@ -173,13 +173,17 @@ func Register(ctx *cli.Context) error { commissionRate := uint8(ctx.Uint64("commission-rate")) commissionMaxChangeRate := uint8(ctx.Uint64("commission-max-change-rate")) + withdrawAccount, err := opservice.ParseAddress(ctx.String(WithdrawAccountFlag.Name)) + if err != nil { + return fmt.Errorf("failed to parse withdraw address: %w", err) + } valMgrAbi, err := bindings.ValidatorManagerMetaData.GetAbi() if err != nil { - return fmt.Errorf("failed to get ValidatorPool ABI: %w", err) + return fmt.Errorf("failed to get ValidatorManager ABI: %w", err) } - txData, err := valMgrAbi.Pack("registerValidator", assets, commissionRate, commissionMaxChangeRate) + txData, err := valMgrAbi.Pack("registerValidator", assets, commissionRate, commissionMaxChangeRate, withdrawAccount) if err != nil { return fmt.Errorf("failed to create register validator transaction data: %w", err) } diff --git a/kroma-validator/cmd/validator/flags.go b/kroma-validator/cmd/validator/flags.go index 6a24c899d..35e764649 100644 --- a/kroma-validator/cmd/validator/flags.go +++ b/kroma-validator/cmd/validator/flags.go @@ -33,3 +33,9 @@ var CommissionMaxChangeRateFlag = &cli.Uint64Flag{ Usage: "The maximum changeable commission rate at once (in percentage). Maximum 100.", Required: true, } + +var WithdrawAccountFlag = &cli.StringFlag{ + Name: "withdraw-account", + Usage: "Address to withdraw deposited asset token", + Required: true, +} diff --git a/op-e2e/actions/l2_validator.go b/op-e2e/actions/l2_validator.go index 7122bf715..5d31ec4f8 100644 --- a/op-e2e/actions/l2_validator.go +++ b/op-e2e/actions/l2_validator.go @@ -182,6 +182,7 @@ func (v *L2Validator) ActRegisterValidator(t Testing, assets *big.Int) { assets, uint8(10), uint8(2), + v.address, ) require.NoError(t, err) diff --git a/op-e2e/e2eutils/validator/validator.go b/op-e2e/e2eutils/validator/validator.go index 44eca85ef..03d3bc673 100644 --- a/op-e2e/e2eutils/validator/validator.go +++ b/op-e2e/e2eutils/validator/validator.go @@ -85,7 +85,7 @@ func (h *Helper) UnbondValPool(priv *ecdsa.PrivateKey) bool { return receipt.Status == types.ReceiptStatusSuccessful } -func (h *Helper) RegisterToValMgr(priv *ecdsa.PrivateKey, amount *big.Int) { +func (h *Helper) RegisterToValMgr(priv *ecdsa.PrivateKey, amount *big.Int, withdrawAddr common.Address) { transactOpts, err := bind.NewKeyedTransactorWithChainID(priv, h.l1ChainID) require.NoError(h.t, err) @@ -95,7 +95,7 @@ func (h *Helper) RegisterToValMgr(priv *ecdsa.PrivateKey, amount *big.Int) { _, err = wait.ForReceiptOK(context.Background(), h.l1Client, tx.Hash()) require.NoError(h.t, err) - tx, err = h.ValMgrContract.RegisterValidator(transactOpts, amount, uint8(10), uint8(2)) + tx, err = h.ValMgrContract.RegisterValidator(transactOpts, amount, uint8(10), uint8(2), withdrawAddr) require.NoError(h.t, err) _, err = wait.ForReceiptOK(context.Background(), h.l1Client, tx.Hash()) diff --git a/op-e2e/setup.go b/op-e2e/setup.go index 5a7e731fe..047dcaa1a 100644 --- a/op-e2e/setup.go +++ b/op-e2e/setup.go @@ -843,7 +843,7 @@ func (cfg SystemConfig) Start(t *testing.T, _opts ...SystemConfigOption) (*Syste if cfg.ValidatorVersion == valhelper.ValidatorV2 { // register to ValidatorManager to be a validator - validatorHelper.RegisterToValMgr(cfg.Secrets.TrustedValidator, cfg.DeployConfig.ValidatorManagerMinActivateAmount.ToInt()) + validatorHelper.RegisterToValMgr(cfg.Secrets.TrustedValidator, cfg.DeployConfig.ValidatorManagerMinActivateAmount.ToInt(), cfg.Secrets.Addresses().TrustedValidator) func() { // Redeploy and upgrade ValidatorPool to set the termination index to a smaller value for ValidatorManager test diff --git a/op-e2e/system_test.go b/op-e2e/system_test.go index 116803ace..67364db96 100644 --- a/op-e2e/system_test.go +++ b/op-e2e/system_test.go @@ -1763,7 +1763,7 @@ func TestChallengeV2(t *testing.T) { // Register to ValidatorManager to be a challenger beforeAmount := cfg.DeployConfig.ValidatorManagerMinActivateAmount.ToInt() - validatorHelper.RegisterToValMgr(cfg.Secrets.Challenger1, beforeAmount) + validatorHelper.RegisterToValMgr(cfg.Secrets.Challenger1, beforeAmount, cfg.Secrets.Addresses().Challenger1) l2OutputOracle, err := bindings.NewL2OutputOracleCaller(cfg.L1Deployments.L2OutputOracleProxy, l1Client) require.NoError(t, err) diff --git a/packages/contracts/.gas-snapshot b/packages/contracts/.gas-snapshot index dfa58f491..b422ee9de 100644 --- a/packages/contracts/.gas-snapshot +++ b/packages/contracts/.gas-snapshot @@ -1,28 +1,28 @@ AssetManagerTest:test_constructor_largeSlashingRate_reverts() (gas: 56130) AssetManagerTest:test_constructor_succeeds() (gas: 35234) -AssetManagerTest:test_delegateKghBatch_succeeds() (gas: 999684) -AssetManagerTest:test_delegateKgh_succeeds() (gas: 408104) +AssetManagerTest:test_delegateKghBatch_succeeds() (gas: 1020627) +AssetManagerTest:test_delegateKgh_succeeds() (gas: 432560) AssetManagerTest:test_delegateKgh_withoutValidatorDelegation_reverts() (gas: 81093) -AssetManagerTest:test_delegate_succeeds() (gas: 325211) +AssetManagerTest:test_delegate_succeeds() (gas: 349667) AssetManagerTest:test_delegate_withoutValidatorDelegation_reverts() (gas: 26463) -AssetManagerTest:test_finalizeClaimValidatorReward_succeeds() (gas: 603508) -AssetManagerTest:test_finalizeUndelegateKgh_noReward_succeeds() (gas: 512816) -AssetManagerTest:test_finalizeUndelegateKgh_rewardExists_succeeds() (gas: 737613) -AssetManagerTest:test_finalizeUndelegateKgh_undelegationPeriodNotElapsed_reverts() (gas: 487242) -AssetManagerTest:test_finalizeUndelegate_succeeds() (gas: 641542) -AssetManagerTest:test_finalizeUndelegate_undelegationPeriodNotElapsed_reverts() (gas: 673007) +AssetManagerTest:test_finalizeClaimValidatorReward_succeeds() (gas: 624863) +AssetManagerTest:test_finalizeUndelegateKgh_noReward_succeeds() (gas: 532380) +AssetManagerTest:test_finalizeUndelegateKgh_rewardExists_succeeds() (gas: 757142) +AssetManagerTest:test_finalizeUndelegateKgh_undelegationPeriodNotElapsed_reverts() (gas: 511697) +AssetManagerTest:test_finalizeUndelegate_succeeds() (gas: 661077) +AssetManagerTest:test_finalizeUndelegate_undelegationPeriodNotElapsed_reverts() (gas: 697426) AssetManagerTest:test_finalizeUndelegate_withNoPendingShares_reverts() (gas: 17874) -AssetManagerTest:test_finalizeUndelegate_zeroRequest_reverts() (gas: 676903) -AssetManagerTest:test_initClaimValidatorReward_succeeds() (gas: 622889) +AssetManagerTest:test_finalizeUndelegate_zeroRequest_reverts() (gas: 701322) +AssetManagerTest:test_initClaimValidatorReward_succeeds() (gas: 647301) AssetManagerTest:test_initUndelegateKghBatch_noShares_reverts() (gas: 19046) -AssetManagerTest:test_initUndelegateKghBatch_succeeds() (gas: 9553329) +AssetManagerTest:test_initUndelegateKghBatch_succeeds() (gas: 9572864) AssetManagerTest:test_initUndelegateKgh_noShares_reverts() (gas: 18002) -AssetManagerTest:test_initUndelegateKgh_succeeds() (gas: 779829) -AssetManagerTest:test_initUndelegate_exactAmount_succeeds() (gas: 727520) -AssetManagerTest:test_initUndelegate_exceedsMaxAmount_reverts() (gas: 501895) -AssetManagerTest:test_initUndelegate_removedFromValidatorTree_succeeds() (gas: 498837) -AssetManagerTest:test_initUndelegate_self_succeeds() (gas: 620442) -AssetManagerTest:test_initUndelegate_succeeds() (gas: 669297) +AssetManagerTest:test_initUndelegateKgh_succeeds() (gas: 804248) +AssetManagerTest:test_initUndelegate_exactAmount_succeeds() (gas: 751931) +AssetManagerTest:test_initUndelegate_exceedsMaxAmount_reverts() (gas: 526306) +AssetManagerTest:test_initUndelegate_removedFromValidatorTree_succeeds() (gas: 518401) +AssetManagerTest:test_initUndelegate_self_succeeds() (gas: 639973) +AssetManagerTest:test_initUndelegate_succeeds() (gas: 693716) ColosseumTest:test_bisect_cancelChallenge_senderNotChallenger_reverts() (gas: 2926854) ColosseumTest:test_bisect_cancelChallenge_succeeds() (gas: 2711230) ColosseumTest:test_bisect_finalizedOutput_reverts() (gas: 462505) @@ -63,12 +63,12 @@ ColosseumTest:test_isInCreationPeriod_succeeds() (gas: 43125) ColosseumTest:test_proveFault_cancelChallenge_succeeds() (gas: 2884832) ColosseumTest:test_proveFault_finalizedOutput_reverts() (gas: 654060) ColosseumTest:test_proveFault_succeeds() (gas: 2434097) -Colosseum_ValidatorSystemUpgrade_Test:test_challengerTimeout_callValidatorManager_succeeds() (gas: 506948) -Colosseum_ValidatorSystemUpgrade_Test:test_createChallenge_callValidatorManager_succeeds() (gas: 428378) -Colosseum_ValidatorSystemUpgrade_Test:test_createChallenge_notSatisfyCondition_reverts() (gas: 92173) -Colosseum_ValidatorSystemUpgrade_Test:test_dismissChallenge_callValidatorManager_succeeds() (gas: 2528873) -Colosseum_ValidatorSystemUpgrade_Test:test_forceDeleteOutput_callValidatorManager_succeeds() (gas: 695061) -Colosseum_ValidatorSystemUpgrade_Test:test_proveFault_callValidatorManager_succeeds() (gas: 2512169) +Colosseum_ValidatorSystemUpgrade_Test:test_challengerTimeout_callValidatorManager_succeeds() (gas: 506895) +Colosseum_ValidatorSystemUpgrade_Test:test_createChallenge_callValidatorManager_succeeds() (gas: 428356) +Colosseum_ValidatorSystemUpgrade_Test:test_createChallenge_notSatisfyCondition_reverts() (gas: 92151) +Colosseum_ValidatorSystemUpgrade_Test:test_dismissChallenge_callValidatorManager_succeeds() (gas: 2528793) +Colosseum_ValidatorSystemUpgrade_Test:test_forceDeleteOutput_callValidatorManager_succeeds() (gas: 694995) +Colosseum_ValidatorSystemUpgrade_Test:test_proveFault_callValidatorManager_succeeds() (gas: 2512111) CrossDomainMessenger_BaseGas_Test:test_baseGas_succeeds() (gas: 11763) CrossDomainOwnable2_Test:test_onlyOwner_notMessenger_reverts() (gas: 8496) CrossDomainOwnable2_Test:test_onlyOwner_notOwner2_reverts() (gas: 57515) @@ -78,11 +78,11 @@ CrossDomainOwnable3_Test:test_constructor_succeeds() (gas: 10626) CrossDomainOwnable3_Test:test_crossDomainOnlyOwner_notMessenger_reverts() (gas: 28436) CrossDomainOwnable3_Test:test_crossDomainOnlyOwner_notOwner2_reverts() (gas: 74076) CrossDomainOwnable3_Test:test_crossDomainOnlyOwner_notOwner_reverts() (gas: 32071) -CrossDomainOwnable3_Test:test_crossDomainTransferOwnership_succeeds() (gas: 91638) +CrossDomainOwnable3_Test:test_crossDomainTransferOwnership_succeeds() (gas: 91644) CrossDomainOwnable3_Test:test_localOnlyOwner_notOwner_reverts() (gas: 13223) CrossDomainOwnable3_Test:test_localOnlyOwner_succeeds() (gas: 35304) -CrossDomainOwnable3_Test:test_localTransferOwnership_succeeds() (gas: 52290) -CrossDomainOwnable3_Test:test_transferOwnershipNoLocal_succeeds() (gas: 48772) +CrossDomainOwnable3_Test:test_localTransferOwnership_succeeds() (gas: 52296) +CrossDomainOwnable3_Test:test_transferOwnershipNoLocal_succeeds() (gas: 48778) CrossDomainOwnable3_Test:test_transferOwnership_noLocalZeroAddress_reverts() (gas: 12108) CrossDomainOwnable3_Test:test_transferOwnership_notOwner_reverts() (gas: 13467) CrossDomainOwnable3_Test:test_transferOwnership_zeroAddress_reverts() (gas: 12129) @@ -99,11 +99,11 @@ GasBenchMark_KromaPortal:test_depositTransaction_benchmark_1() (gas: 75687) GasBenchMark_KromaPortal:test_proveWithdrawalTransaction_benchmark() (gas: 263529) GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 342689) GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_1() (gas: 2940851) -GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 518894) -GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 4031087) +GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 518900) +GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 4031093) GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 421662) GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 3467561) -GasBenchMark_L1StandardBridge_Finalize:test_finalizeBridgeETH_benchmark() (gas: 32252) +GasBenchMark_L1StandardBridge_Finalize:test_finalizeBridgeETH_benchmark() (gas: 32243) GasBenchMark_L2OutputOracle:test_submitL2Output_benchmark() (gas: 157518) GasPriceOracleBedrock_Test:test_baseFee_succeeds() (gas: 8347) GasPriceOracleBedrock_Test:test_decimals_succeeds() (gas: 6189) @@ -163,16 +163,16 @@ KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifOutputR KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifOutputTimestampIsNotFinalized_reverts() (gas: 304248) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifWithdrawalNotProven_reverts() (gas: 41755) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifWithdrawalProofNotOldEnough_reverts() (gas: 293788) -KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onInsufficientGas_reverts() (gas: 291403) +KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onInsufficientGas_reverts() (gas: 291400) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onRecentWithdrawal_reverts() (gas: 274554) -KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReentrancy_reverts() (gas: 329431) +KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReentrancy_reverts() (gas: 329410) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReplay_reverts() (gas: 340591) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_paused_reverts() (gas: 53614) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_provenWithdrawalHash_succeeds() (gas: 329679) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_targetFails_fails() (gas: 8797746687696168235) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_timestampLessThanL2OracleStart_reverts() (gas: 291335) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_onInvalidOutputRootProof_reverts() (gas: 101114) -KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_onSelfCall_reverts() (gas: 66250) +KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_onSelfCall_reverts() (gas: 66270) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_paused_reverts() (gas: 87066) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProveChangedOutputRootAndOutputIndex_succeeds() (gas: 674387) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProveChangedOutputRoot_succeeds() (gas: 449332) @@ -213,49 +213,49 @@ L1CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 61394) L1CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 39138) L1CrossDomainMessenger_Test:test_relayMessage_v2_reverts() (gas: 12388) L1CrossDomainMessenger_Test:test_replayMessage_withValue_reverts() (gas: 22319) -L1CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 368808) -L1CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 1649750) +L1CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 368802) +L1CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 1649780) L1CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 66200) L1CrossDomainMessenger_Test:test_xDomainSender_notSet_reverts() (gas: 15602) -L1ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 52839) -L1ERC721Bridge_Test:test_bridgeERC721To_remoteTokenZeroAddress_reverts() (gas: 27408) -L1ERC721Bridge_Test:test_bridgeERC721To_succeeds() (gas: 433934) -L1ERC721Bridge_Test:test_bridgeERC721To_wrongOwner_reverts() (gas: 61126) -L1ERC721Bridge_Test:test_bridgeERC721_fromContract_reverts() (gas: 25821) -L1ERC721Bridge_Test:test_bridgeERC721_localTokenZeroAddress_reverts() (gas: 50674) -L1ERC721Bridge_Test:test_bridgeERC721_remoteTokenZeroAddress_reverts() (gas: 25287) -L1ERC721Bridge_Test:test_bridgeERC721_succeeds() (gas: 431470) -L1ERC721Bridge_Test:test_bridgeERC721_wrongOwner_reverts() (gas: 60912) +L1ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 52833) +L1ERC721Bridge_Test:test_bridgeERC721To_remoteTokenZeroAddress_reverts() (gas: 27402) +L1ERC721Bridge_Test:test_bridgeERC721To_succeeds() (gas: 433928) +L1ERC721Bridge_Test:test_bridgeERC721To_wrongOwner_reverts() (gas: 61120) +L1ERC721Bridge_Test:test_bridgeERC721_fromContract_reverts() (gas: 25815) +L1ERC721Bridge_Test:test_bridgeERC721_localTokenZeroAddress_reverts() (gas: 50668) +L1ERC721Bridge_Test:test_bridgeERC721_remoteTokenZeroAddress_reverts() (gas: 25281) +L1ERC721Bridge_Test:test_bridgeERC721_succeeds() (gas: 431464) +L1ERC721Bridge_Test:test_bridgeERC721_wrongOwner_reverts() (gas: 60906) L1ERC721Bridge_Test:test_constructor_succeeds() (gas: 8573) L1ERC721Bridge_Test:test_finalizeBridgeERC721_notEscrowed_reverts() (gas: 22146) L1ERC721Bridge_Test:test_finalizeBridgeERC721_notFromRemoteMessenger_reverts() (gas: 19891) L1ERC721Bridge_Test:test_finalizeBridgeERC721_notViaLocalMessenger_reverts() (gas: 16068) L1ERC721Bridge_Test:test_finalizeBridgeERC721_selfToken_reverts() (gas: 17664) -L1ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 400872) -L1StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 686758) -L1StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 684475) -L1StandardBridge_BridgeERC20_TestFail:test_bridgeERC20_notEoa_reverts() (gas: 17150) -L1StandardBridge_BridgeETHTo_Test:test_bridgeETHTo_succeeds() (gas: 483523) -L1StandardBridge_BridgeETH_Test:test_bridgeETH_succeeds() (gas: 470622) +L1ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 400866) +L1StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 686767) +L1StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 684487) +L1StandardBridge_BridgeERC20_TestFail:test_bridgeERC20_notEoa_reverts() (gas: 17162) +L1StandardBridge_BridgeETHTo_Test:test_bridgeETHTo_succeeds() (gas: 483535) +L1StandardBridge_BridgeETH_Test:test_bridgeETH_succeeds() (gas: 470634) L1StandardBridge_BridgeETH_TestFail:test_BridgeETH_notEoa_reverts() (gas: 35428) -L1StandardBridge_FinalizeBridgeERC20Withdrawal_Test:test_finalizeBridgeERC20Withdrawal_succeeds() (gas: 467657) -L1StandardBridge_FinalizeBridgeERC20Withdrawal_TestFail:test_finalizeBridgeERC20Withdrawal_notMessenger_reverts() (gas: 24541) -L1StandardBridge_FinalizeBridgeERC20Withdrawal_TestFail:test_finalizeBridgeERC20Withdrawal_notOtherBridge_reverts() (gas: 25039) -L1StandardBridge_FinalizeBridgeETH_Test:test_finalizeBridgeETH_succeeds() (gas: 42177) -L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 27596) -L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 27677) -L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_sendToSelf_reverts() (gas: 27668) -L1StandardBridge_FinalizeETHWithdrawal_Test:test_finalizeETHWithdrawal_succeeds() (gas: 47289) +L1StandardBridge_FinalizeBridgeERC20Withdrawal_Test:test_finalizeBridgeERC20Withdrawal_succeeds() (gas: 467664) +L1StandardBridge_FinalizeBridgeERC20Withdrawal_TestFail:test_finalizeBridgeERC20Withdrawal_notMessenger_reverts() (gas: 24538) +L1StandardBridge_FinalizeBridgeERC20Withdrawal_TestFail:test_finalizeBridgeERC20Withdrawal_notOtherBridge_reverts() (gas: 25036) +L1StandardBridge_FinalizeBridgeETH_Test:test_finalizeBridgeETH_succeeds() (gas: 42174) +L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 27602) +L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 27668) +L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_sendToSelf_reverts() (gas: 27662) +L1StandardBridge_FinalizeETHWithdrawal_Test:test_finalizeETHWithdrawal_succeeds() (gas: 47295) L1StandardBridge_Getter_Test:test_getters_succeeds() (gas: 16030) L1StandardBridge_Initialize_Test:test_initialize_succeeds() (gas: 16254) -L1StandardBridge_Receive_Test:test_receive_succeeds() (gas: 590348) +L1StandardBridge_Receive_Test:test_receive_succeeds() (gas: 590345) L2CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 8482) L2CrossDomainMessenger_Test:test_relayMessage_retry_succeeds() (gas: 163828) L2CrossDomainMessenger_Test:test_relayMessage_succeeds() (gas: 48919) L2CrossDomainMessenger_Test:test_relayMessage_toSystemContract_reverts() (gas: 20396) L2CrossDomainMessenger_Test:test_relayMessage_v1_reverts() (gas: 11765) -L2CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 122989) -L2CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 133707) +L2CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 122986) +L2CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 133737) L2CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 49229) L2CrossDomainMessenger_Test:test_xDomainSender_senderNotSet_reverts() (gas: 10561) L2ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 26569) @@ -306,16 +306,16 @@ L2OutputOracleUpgradeable_Test:test_initializeProxy_alreadyInitialized_reverts() L2OutputOracleUpgradeable_Test:test_upgrading_succeeds() (gas: 180651) L2OutputOracle_ValidatorSystemUpgrade_Test:test_setNextFinalizeOutputIndex_succeeds() (gas: 41542) L2OutputOracle_ValidatorSystemUpgrade_Test:test_setNextFinalizeOutputIndex_wrongCaller_reverts() (gas: 41164) -L2OutputOracle_ValidatorSystemUpgrade_Test:test_submitL2Output_upgradeValidatorSystem_succeeds() (gas: 380143) -L2StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 380880) -L2StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 376964) -L2StandardBridge_Bridge_Test:test_finalizeBridgeERC20_succeeds() (gas: 83250) -L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 23882) -L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 24006) -L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_sendToSelf_reverts() (gas: 23897) -L2StandardBridge_FinalizeBridgeETH_Test:test_finalizeBridgeETH_succeeds() (gas: 36080) +L2OutputOracle_ValidatorSystemUpgrade_Test:test_submitL2Output_upgradeValidatorSystem_succeeds() (gas: 380099) +L2StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 380870) +L2StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 376942) +L2StandardBridge_Bridge_Test:test_finalizeBridgeERC20_succeeds() (gas: 83247) +L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 23876) +L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 24015) +L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_sendToSelf_reverts() (gas: 23903) +L2StandardBridge_FinalizeBridgeETH_Test:test_finalizeBridgeETH_succeeds() (gas: 36089) L2StandardBridge_Test:test_initialize_succeeds() (gas: 19153) -L2StandardBridge_Test:test_receive_succeeds() (gas: 128686) +L2StandardBridge_Test:test_receive_succeeds() (gas: 128689) L2ToL1MessagePasserTest:test_burn_succeeds() (gas: 109877) L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract_succeeds() (gas: 70364) L2ToL1MessagePasserTest:test_initiateWithdrawal_fromEOA_succeeds() (gas: 75917) @@ -396,7 +396,7 @@ SecurityCouncilTest:test_submitTransaction_onlyTokenOwner_reverts() (gas: 43573) SecurityCouncilTest:test_submitTransaction_succeeds() (gas: 131772) SecurityCouncilTest:test_submitTransaction_targetInvalid_reverts() (gas: 45547) SecurityCouncilTest:test_submitTransaction_transactionExists_reverts() (gas: 130963) -SetPrevBaseFee_Test:test_setPrevBaseFee_succeeds() (gas: 11533) +SetPrevBaseFee_Test:test_setPrevBaseFee_succeeds() (gas: 11563) StandardBridge_Stateless_Test:test_isCorrectTokenPair_succeeds() (gas: 14442) StandardBridge_Stateless_Test:test_isKromaMintableERC20_succeeds() (gas: 23496) SystemConfig_Initialize_TestFail:test_initialize_lowGasLimit_reverts() (gas: 148656) @@ -417,50 +417,51 @@ UpgradeGovernorTest:test_initialize_succeeds() (gas: 85053) UpgradeGovernorTest:test_queueProposal_succeeds() (gas: 280037) UpgradeGovernorTest:test_voteProposal_overPeriod_reverts() (gas: 152674) UpgradeGovernorTest:test_voteProposal_succeeds() (gas: 198054) -ValidatorManagerTest:test_activateValidator_alreadyActivated_reverts() (gas: 272501) -ValidatorManagerTest:test_activateValidator_exited_reverts() (gas: 330458) -ValidatorManagerTest:test_activateValidator_inJail_reverts() (gas: 1046862) +ValidatorManagerTest:test_activateValidator_alreadyActivated_reverts() (gas: 296937) +ValidatorManagerTest:test_activateValidator_exited_reverts() (gas: 350024) +ValidatorManagerTest:test_activateValidator_inJail_reverts() (gas: 1093909) ValidatorManagerTest:test_activateValidator_notValidator_reverts() (gas: 19928) -ValidatorManagerTest:test_activateValidator_registered_reverts() (gas: 179457) -ValidatorManagerTest:test_activateValidator_succeeds() (gas: 360491) -ValidatorManagerTest:test_activatedValidatorTotalWeight_succeeds() (gas: 553176) -ValidatorManagerTest:test_afterSubmitL2Output_distributeReward_succeeds() (gas: 7348873) -ValidatorManagerTest:test_afterSubmitL2Output_resetNoSubmissionCount_succeeds() (gas: 752550) -ValidatorManagerTest:test_afterSubmitL2Output_senderNotL2OO_reverts() (gas: 15889) -ValidatorManagerTest:test_afterSubmitL2Output_tryJail_succeeds() (gas: 876221) -ValidatorManagerTest:test_afterSubmitL2Output_updatePriorityValidator_succeeds() (gas: 913828) -ValidatorManagerTest:test_changeCommissionRate_exited_reverts() (gas: 332489) -ValidatorManagerTest:test_changeCommissionRate_inJail_reverts() (gas: 886532) -ValidatorManagerTest:test_changeCommissionRate_largeChangeRate_reverts() (gas: 284871) -ValidatorManagerTest:test_changeCommissionRate_largeCommissionRate_reverts() (gas: 280784) -ValidatorManagerTest:test_changeCommissionRate_minChangeSecNotElapsed_reverts() (gas: 275202) -ValidatorManagerTest:test_changeCommissionRate_sameCommissionRate_reverts() (gas: 282650) -ValidatorManagerTest:test_changeCommissionRate_succeeds() (gas: 290561) -ValidatorManagerTest:test_changeCommissionRate_twice_succeeds() (gas: 310269) -ValidatorManagerTest:test_checkSubmissionEligibility_inJail_reverts() (gas: 891075) -ValidatorManagerTest:test_checkSubmissionEligibility_notSatisfyCondition_reverts() (gas: 22077) -ValidatorManagerTest:test_checkSubmissionEligibility_notSelected_reverts() (gas: 66714) -ValidatorManagerTest:test_checkSubmissionEligibility_priorityRound_succeeds() (gas: 275924) -ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_inJail_reverts() (gas: 894338) -ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_notSatisfyCondition_reverts() (gas: 71095) -ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_succeeds() (gas: 325225) -ValidatorManagerTest:test_checkSubmissionEligibility_senderNotL2OO_reverts() (gas: 15584) -ValidatorManagerTest:test_constructor_smallMinActivateAmount_reverts() (gas: 61989) -ValidatorManagerTest:test_constructor_succeeds() (gas: 41697) -ValidatorManagerTest:test_getStatus_registered_succeeds() (gas: 351331) -ValidatorManagerTest:test_registerValidator_active_succeeds() (gas: 294058) -ValidatorManagerTest:test_registerValidator_alreadyInitiated_reverts() (gas: 296012) -ValidatorManagerTest:test_registerValidator_largeCommissionMaxChangeRate_reverts() (gas: 52383) -ValidatorManagerTest:test_registerValidator_largeCommissionRate_reverts() (gas: 52349) -ValidatorManagerTest:test_registerValidator_registered_succeeds() (gas: 191001) -ValidatorManagerTest:test_registerValidator_smallAsset_reverts() (gas: 52459) -ValidatorManagerTest:test_slash_notColosseum_reverts() (gas: 26415) -ValidatorManagerTest:test_slash_succeeds() (gas: 14483897) -ValidatorManagerTest:test_tryUnjail_force_senderNotColosseum_reverts() (gas: 880103) -ValidatorManagerTest:test_tryUnjail_notInJail_reverts() (gas: 18419) -ValidatorManagerTest:test_tryUnjail_periodNotElapsed_reverts() (gas: 879148) -ValidatorManagerTest:test_tryUnjail_senderNotSelf_reverts() (gas: 878955) -ValidatorManagerTest:test_tryUnjail_succeeds() (gas: 966244) +ValidatorManagerTest:test_activateValidator_registered_reverts() (gas: 203893) +ValidatorManagerTest:test_activateValidator_succeeds() (gas: 384925) +ValidatorManagerTest:test_activatedValidatorTotalWeight_succeeds() (gas: 600026) +ValidatorManagerTest:test_afterSubmitL2Output_distributeReward_succeeds() (gas: 7368492) +ValidatorManagerTest:test_afterSubmitL2Output_resetNoSubmissionCount_succeeds() (gas: 799528) +ValidatorManagerTest:test_afterSubmitL2Output_senderNotL2OO_reverts() (gas: 15890) +ValidatorManagerTest:test_afterSubmitL2Output_tryJail_succeeds() (gas: 923180) +ValidatorManagerTest:test_afterSubmitL2Output_updatePriorityValidator_succeeds() (gas: 960848) +ValidatorManagerTest:test_changeCommissionRate_exited_reverts() (gas: 352038) +ValidatorManagerTest:test_changeCommissionRate_inJail_reverts() (gas: 933469) +ValidatorManagerTest:test_changeCommissionRate_largeChangeRate_reverts() (gas: 309259) +ValidatorManagerTest:test_changeCommissionRate_largeCommissionRate_reverts() (gas: 305154) +ValidatorManagerTest:test_changeCommissionRate_minChangeSecNotElapsed_reverts() (gas: 299594) +ValidatorManagerTest:test_changeCommissionRate_sameCommissionRate_reverts() (gas: 307017) +ValidatorManagerTest:test_changeCommissionRate_succeeds() (gas: 314949) +ValidatorManagerTest:test_changeCommissionRate_twice_succeeds() (gas: 334634) +ValidatorManagerTest:test_checkSubmissionEligibility_inJail_reverts() (gas: 938122) +ValidatorManagerTest:test_checkSubmissionEligibility_notSatisfyCondition_reverts() (gas: 22076) +ValidatorManagerTest:test_checkSubmissionEligibility_notSelected_reverts() (gas: 66802) +ValidatorManagerTest:test_checkSubmissionEligibility_priorityRound_succeeds() (gas: 300403) +ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_inJail_reverts() (gas: 941385) +ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_notSatisfyCondition_reverts() (gas: 71183) +ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_succeeds() (gas: 349727) +ValidatorManagerTest:test_checkSubmissionEligibility_senderNotL2OO_reverts() (gas: 15649) +ValidatorManagerTest:test_constructor_smallMinActivateAmount_reverts() (gas: 62041) +ValidatorManagerTest:test_constructor_succeeds() (gas: 41721) +ValidatorManagerTest:test_getStatus_registered_succeeds() (gas: 375788) +ValidatorManagerTest:test_registerValidator_active_succeeds() (gas: 320438) +ValidatorManagerTest:test_registerValidator_alreadyInitiated_reverts() (gas: 320670) +ValidatorManagerTest:test_registerValidator_largeCommissionMaxChangeRate_reverts() (gas: 54630) +ValidatorManagerTest:test_registerValidator_largeCommissionRate_reverts() (gas: 54596) +ValidatorManagerTest:test_registerValidator_registered_succeeds() (gas: 215413) +ValidatorManagerTest:test_registerValidator_smallAsset_reverts() (gas: 54706) +ValidatorManagerTest:test_registerValidator_withdrawZeroAddr_reverts() (gas: 52581) +ValidatorManagerTest:test_slash_notColosseum_reverts() (gas: 26416) +ValidatorManagerTest:test_slash_succeeds() (gas: 14521532) +ValidatorManagerTest:test_tryUnjail_force_senderNotColosseum_reverts() (gas: 927018) +ValidatorManagerTest:test_tryUnjail_notInJail_reverts() (gas: 18375) +ValidatorManagerTest:test_tryUnjail_periodNotElapsed_reverts() (gas: 926063) +ValidatorManagerTest:test_tryUnjail_senderNotSelf_reverts() (gas: 925870) +ValidatorManagerTest:test_tryUnjail_succeeds() (gas: 1013093) ValidatorPoolTest:test_addPendingBond_insufficientBalances_reverts() (gas: 301266) ValidatorPoolTest:test_addPendingBond_noBond_reverts() (gas: 29957) ValidatorPoolTest:test_addPendingBond_succeeds() (gas: 371202) diff --git a/packages/contracts/contracts/L1/ValidatorManager.sol b/packages/contracts/contracts/L1/ValidatorManager.sol index 48a9bedd9..1679b72a2 100644 --- a/packages/contracts/contracts/L1/ValidatorManager.sol +++ b/packages/contracts/contracts/L1/ValidatorManager.sol @@ -174,7 +174,8 @@ contract ValidatorManager is ISemver, IValidatorManager { function registerValidator( uint128 assets, uint8 commissionRate, - uint8 commissionMaxChangeRate + uint8 commissionMaxChangeRate, + address withdrawAccount ) external { if (getStatus(msg.sender) != ValidatorStatus.NONE) revert ImproperValidatorStatus(); @@ -185,11 +186,14 @@ contract ValidatorManager is ISemver, IValidatorManager { if (commissionMaxChangeRate > COMMISSION_RATE_DENOM) revert MaxCommissionChangeRateExceeded(); + if (withdrawAccount == address(0)) revert ZeroAddress(); + Validator storage validatorInfo = _validatorInfo[msg.sender]; validatorInfo.isInitiated = true; validatorInfo.commissionRate = commissionRate; validatorInfo.commissionMaxChangeRate = commissionMaxChangeRate; validatorInfo.commissionRateChangedAt = uint128(block.timestamp); + validatorInfo.withdrawAccount = withdrawAccount; ASSET_MANAGER.delegateToRegister(msg.sender, assets); @@ -354,6 +358,17 @@ contract ValidatorManager is ISemver, IValidatorManager { return _validatorInfo[validator].commissionMaxChangeRate; } + /** + * @notice Returns the address of withdraw account of given validator. + * + * @param validator Address of the validator. + * + * @return The address of withdraw account of given validator. + */ + function getWithdrawAccount(address validator) external view returns (address) { + return _validatorInfo[validator].withdrawAccount; + } + /** * @notice Returns the number of activated validators. * diff --git a/packages/contracts/contracts/L1/interfaces/IValidatorManager.sol b/packages/contracts/contracts/L1/interfaces/IValidatorManager.sol index b8d1d84c2..4d645720e 100644 --- a/packages/contracts/contracts/L1/interfaces/IValidatorManager.sol +++ b/packages/contracts/contracts/L1/interfaces/IValidatorManager.sol @@ -79,6 +79,8 @@ interface IValidatorManager { * @custom:field commissionRate Commission rate of validator. * @custom:field commissionMaxChangeRate Maximum changeable commission rate at once. * @custom:field commissionRateChangedAt Last timestamp when the commission rate was changed. + * @custom:field withdrawAccount An account where assets can be withdrawn to. Only this + * account can withdraw the assets. */ struct Validator { bool isInitiated; @@ -86,6 +88,7 @@ interface IValidatorManager { uint8 commissionRate; uint8 commissionMaxChangeRate; uint128 commissionRateChangedAt; + address withdrawAccount; } /** @@ -218,6 +221,11 @@ interface IValidatorManager { */ error MaxCommissionChangeRateExceeded(); + /** + * @notice Reverts when the address is zero address. + */ + error ZeroAddress(); + /** * @notice Reverts when try to change commission rate with same value as previous. */ @@ -250,11 +258,14 @@ interface IValidatorManager { * @param assets The amount of assets to self-delegate. * @param commissionRate The commission rate the validator sets. * @param commissionMaxChangeRate Maximum changeable commission rate at once. + * @param withdrawAccount An account where assets can be withdrawn to. Only this account + * can withdraw the assets. */ function registerValidator( uint128 assets, uint8 commissionRate, - uint8 commissionMaxChangeRate + uint8 commissionMaxChangeRate, + address withdrawAccount ) external; /** diff --git a/packages/contracts/contracts/test/AssetManager.t.sol b/packages/contracts/contracts/test/AssetManager.t.sol index 50ff228fe..eaa3e80c9 100644 --- a/packages/contracts/contracts/test/AssetManager.t.sol +++ b/packages/contracts/contracts/test/AssetManager.t.sol @@ -183,7 +183,7 @@ contract AssetManagerTest is ValidatorSystemUpgrade_Initializer { vm.startPrank(validator); kro.approve(address(assetManager), kroAmount); // Self delegation - valMgr.registerValidator(kroAmount, 0, 10); + valMgr.registerValidator(kroAmount, 0, 10, withdrawAcc); vm.stopPrank(); vm.startPrank(delegator); @@ -198,7 +198,7 @@ contract AssetManagerTest is ValidatorSystemUpgrade_Initializer { vm.startPrank(validator); kro.approve(address(assetManager), 100e18); // Self delegation - valMgr.registerValidator(100e18, 0, 0); + valMgr.registerValidator(100e18, 0, 0, withdrawAcc); vm.stopPrank(); kgh.mint(delegator, tokenId); @@ -213,7 +213,7 @@ contract AssetManagerTest is ValidatorSystemUpgrade_Initializer { kro.transfer(address(validator), 100e18); vm.startPrank(validator); kro.approve(address(assetManager), 100e18); - valMgr.registerValidator(100e18, 0, 10); + valMgr.registerValidator(100e18, 0, 10, withdrawAcc); vm.stopPrank(); uint256[] memory tokenIds = new uint256[](kghCounts); diff --git a/packages/contracts/contracts/test/CommonTest.t.sol b/packages/contracts/contracts/test/CommonTest.t.sol index 56ba4616a..8eb933ffa 100644 --- a/packages/contracts/contracts/test/CommonTest.t.sol +++ b/packages/contracts/contracts/test/CommonTest.t.sol @@ -254,6 +254,7 @@ contract L2OutputOracle_Initializer is UpgradeGovernor_Initializer { // Test data address internal asserter = 0x000000000000000000000000000000000000aAaB; address internal challenger = 0x000000000000000000000000000000000000AAaC; + address internal withdrawAcc = 0x000000000000000000000000000000000000AAaE; uint256 initL1Time; event OutputSubmitted( @@ -404,7 +405,7 @@ contract L2OutputOracle_Initializer is UpgradeGovernor_Initializer { function _registerValidator(address validator, uint128 assets) internal { vm.startPrank(validator); assetToken.approve(address(assetMgr), uint256(assets)); - valMgr.registerValidator(assets, 10, 5); + valMgr.registerValidator(assets, 10, 5, withdrawAcc); vm.stopPrank(); } diff --git a/packages/contracts/contracts/test/ValidatorManager.t.sol b/packages/contracts/contracts/test/ValidatorManager.t.sol index b66e14f4f..8f2c1b44f 100644 --- a/packages/contracts/contracts/test/ValidatorManager.t.sol +++ b/packages/contracts/contracts/test/ValidatorManager.t.sol @@ -210,13 +210,14 @@ contract ValidatorManagerTest is ValidatorSystemUpgrade_Initializer { emit ValidatorActivated(trusted, block.timestamp); vm.expectEmit(true, true, false, true, address(valMgr)); emit ValidatorRegistered(trusted, true, commissionRate, commissionMaxChangeRate, assets); - valMgr.registerValidator(assets, commissionRate, commissionMaxChangeRate); + valMgr.registerValidator(assets, commissionRate, commissionMaxChangeRate, withdrawAcc); vm.stopPrank(); assertEq(assetToken.balanceOf(trusted), trustedBalance - assets); assertEq(assetMgr.totalKroAssets(trusted), assets); assertEq(valMgr.getCommissionRate(trusted), commissionRate); assertEq(valMgr.getCommissionMaxChangeRate(trusted), commissionMaxChangeRate); + assertEq(valMgr.getWithdrawAccount(trusted), withdrawAcc); assertEq(mockValMgr.commissionRateChangedAt(trusted), block.timestamp); assertTrue(valMgr.getStatus(trusted) == IValidatorManager.ValidatorStatus.ACTIVE); @@ -235,7 +236,7 @@ contract ValidatorManagerTest is ValidatorSystemUpgrade_Initializer { assetToken.approve(address(assetMgr), uint256(assets)); vm.expectEmit(true, true, false, true, address(valMgr)); emit ValidatorRegistered(trusted, false, commissionRate, commissionMaxChangeRate, assets); - valMgr.registerValidator(assets, commissionRate, commissionMaxChangeRate); + valMgr.registerValidator(assets, commissionRate, commissionMaxChangeRate, withdrawAcc); vm.stopPrank(); assertTrue(valMgr.getStatus(trusted) == IValidatorManager.ValidatorStatus.REGISTERED); @@ -251,7 +252,7 @@ contract ValidatorManagerTest is ValidatorSystemUpgrade_Initializer { vm.startPrank(trusted); assetToken.approve(address(assetMgr), uint256(assets)); vm.expectRevert(IValidatorManager.ImproperValidatorStatus.selector); - valMgr.registerValidator(assets, 10, 5); + valMgr.registerValidator(assets, 10, 5, withdrawAcc); } function test_registerValidator_smallAsset_reverts() external { @@ -260,7 +261,7 @@ contract ValidatorManagerTest is ValidatorSystemUpgrade_Initializer { vm.startPrank(trusted); assetToken.approve(address(assetMgr), uint256(assets)); vm.expectRevert(IValidatorManager.InsufficientAsset.selector); - valMgr.registerValidator(assets, 10, 5); + valMgr.registerValidator(assets, 10, 5, withdrawAcc); } function test_registerValidator_largeCommissionRate_reverts() external { @@ -269,7 +270,7 @@ contract ValidatorManagerTest is ValidatorSystemUpgrade_Initializer { vm.startPrank(trusted); assetToken.approve(address(assetMgr), uint256(assets)); vm.expectRevert(IValidatorManager.MaxCommissionRateExceeded.selector); - valMgr.registerValidator(assets, 101, 5); + valMgr.registerValidator(assets, 101, 5, withdrawAcc); } function test_registerValidator_largeCommissionMaxChangeRate_reverts() external { @@ -278,7 +279,16 @@ contract ValidatorManagerTest is ValidatorSystemUpgrade_Initializer { vm.startPrank(trusted); assetToken.approve(address(assetMgr), uint256(assets)); vm.expectRevert(IValidatorManager.MaxCommissionChangeRateExceeded.selector); - valMgr.registerValidator(assets, 10, 101); + valMgr.registerValidator(assets, 10, 101, withdrawAcc); + } + + function test_registerValidator_withdrawZeroAddr_reverts() external { + uint128 assets = minRegisterAmount; + + vm.startPrank(trusted); + assetToken.approve(address(assetMgr), uint256(assets)); + vm.expectRevert(IValidatorManager.ZeroAddress.selector); + valMgr.registerValidator(assets, 10, 5, address(0)); } function test_activateValidator_succeeds() external {