diff --git a/kroma-bindings/bindings/l2outputoracle.go b/kroma-bindings/bindings/l2outputoracle.go index 57a63c3a1..12665d7e5 100644 --- a/kroma-bindings/bindings/l2outputoracle.go +++ b/kroma-bindings/bindings/l2outputoracle.go @@ -31,8 +31,8 @@ var ( // L2OutputOracleMetaData contains all meta data concerning the L2OutputOracle contract. var L2OutputOracleMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_validatorPool\",\"type\":\"address\",\"internalType\":\"contractValidatorPool\"},{\"name\":\"_validatorManager\",\"type\":\"address\",\"internalType\":\"contractIValidatorManager\"},{\"name\":\"_colosseum\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_submissionInterval\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_l2BlockTime\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_startingBlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_startingTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_finalizationPeriodSeconds\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"COLOSSEUM\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FINALIZATION_PERIOD_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"L2_BLOCK_TIME\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SUBMISSION_INTERVAL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIValidatorManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_POOL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractValidatorPool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"computeL2Timestamp\",\"inputs\":[{\"name\":\"_l2BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"finalizedAt\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getL2Output\",\"inputs\":[{\"name\":\"_l2OutputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTypes.CheckpointOutput\",\"components\":[{\"name\":\"submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"outputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"l2BlockNumber\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getL2OutputAfter\",\"inputs\":[{\"name\":\"_l2BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTypes.CheckpointOutput\",\"components\":[{\"name\":\"submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"outputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"l2BlockNumber\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getL2OutputIndexAfter\",\"inputs\":[{\"name\":\"_l2BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSubmitter\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_startingBlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_startingTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isFinalized\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestFinalizedOutputIndex\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestOutputIndex\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextOutputIndex\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextOutputMinL2Timestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"replaceL2Output\",\"inputs\":[{\"name\":\"_l2OutputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_newOutputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setLatestFinalizedOutputIndex\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startingBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"startingTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitL2Output\",\"inputs\":[{\"name\":\"_outputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l2BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_l1BlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OutputReplaced\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"newOutputRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OutputSubmitted\",\"inputs\":[{\"name\":\"outputRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"l2OutputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"l2BlockNumber\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"l1Timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6101406040523480156200001257600080fd5b50604051620021e1380380620021e183398101604081905262000035916200034b565b60008411620000b15760405162461bcd60e51b815260206004820152603460248201527f4c324f75747075744f7261636c653a204c3220626c6f636b2074696d65206d7560448201527f73742062652067726561746572207468616e203000000000000000000000000060648201526084015b60405180910390fd5b60008511620001295760405162461bcd60e51b815260206004820152603a60248201527f4c324f75747075744f7261636c653a207375626d697373696f6e20696e74657260448201527f76616c206d7573742062652067726561746572207468616e20300000000000006064820152608401620000a8565b6001600160a01b0380891660805287811660a052861660c05260e08590526101008490526101208190526200015f83836200016d565b5050505050505050620003cf565b600054610100900460ff16158080156200018e5750600054600160ff909116105b80620001be5750620001ab306200032360201b62001aae1760201c565b158015620001be575060005460ff166001145b620002235760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000a8565b6000805460ff19166001179055801562000247576000805461ff0019166101001790555b42821115620002cd5760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201526374696d6560e01b608482015260a401620000a8565b6002829055600183905580156200031e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b6001600160a01b03811681146200034857600080fd5b50565b600080600080600080600080610100898b0312156200036957600080fd5b8851620003768162000332565b60208a0151909850620003898162000332565b60408a01519097506200039c8162000332565b60608a015160808b015160a08c015160c08d015160e0909d01519b9e9a9d50929b919a9099929850909650945092505050565b60805160a05160c05160e0516101005161012051611d6062000481600039600081816105b801528181610dce0152818161114801526119590152600081816101b7015261149001526000818161025901526114e1015260008181610383015261174b01526000818161047b0152818161075901528181610d1601526112be0152600081816104ef015281816106b6015281816107cf01528181610da30152818161122101526113940152611d606000f3fe6080604052600436106101a05760003560e01c80639e45e8f4116100e1578063b98debbf1161008a578063dcec334811610064578063dcec334814610551578063e4a3011614610566578063e664672314610586578063f4daa291146105a657600080fd5b8063b98debbf146104dd578063cf8e5cf014610511578063d1de856c1461053157600080fd5b8063ae9483e0116100bb578063ae9483e014610469578063b0ea09a81461049d578063b4c302ff146104bd57600080fd5b80639e45e8f414610371578063a25ae557146103ca578063a48ea6de1461044957600080fd5b80635a045f781161014e57806370872aa51161012857806370872aa5146103105780637f0064201461032657806380446bd214610346578063887862721461035b57600080fd5b80635a045f78146102d157806369f16eec146102e65780636abcf563146102fb57600080fd5b80634599c7881161017f5780634599c78814610232578063529933df1461024757806354fd4d501461027b57600080fd5b80622134cc146101a557806333727c4d146101ec5780633f98365b1461021c575b600080fd5b3480156101b157600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b3480156101f857600080fd5b5061020c610207366004611aca565b6105da565b60405190151581526020016101e3565b34801561022857600080fd5b506101d960045481565b34801561023e57600080fd5b506101d96105ee565b34801561025357600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b34801561028757600080fd5b506102c46040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101e39190611ae3565b6102e46102df366004611b56565b610661565b005b3480156102f257600080fd5b506101d9610e7d565b34801561030757600080fd5b506003546101d9565b34801561031c57600080fd5b506101d960015481565b34801561033257600080fd5b506101d9610341366004611aca565b610e8f565b34801561035257600080fd5b506101d961106f565b34801561036757600080fd5b506101d960025481565b34801561037d57600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e3565b3480156103d657600080fd5b506103ea6103e5366004611aca565b611087565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015190820152828201516fffffffffffffffffffffffffffffffff90811692820192909252606092830151909116918101919091526080016101e3565b34801561045557600080fd5b506101d9610464366004611aca565b611144565b34801561047557600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a957600080fd5b506103a56104b8366004611aca565b6111b0565b3480156104c957600080fd5b506102e46104d8366004611aca565b6111f2565b3480156104e957600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561051d57600080fd5b506103ea61052c366004611aca565b61144d565b34801561053d57600080fd5b506101d961054c366004611aca565b61148c565b34801561055d57600080fd5b506101d96114d4565b34801561057257600080fd5b506102e4610581366004611b88565b61151a565b34801561059257600080fd5b506102e46105a1366004611bcf565b611733565b3480156105b257600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b6000426105e683611144565b111592915050565b60035460009015610658576003805461060990600190611c37565b8154811061061957610619611c4e565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b600061066c60035490565b6040517fad36d6cc0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ad36d6cc90602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190611c7d565b9050600081156107cd576040517f891aab740000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063891aab749060240160006040518083038186803b1580156107b057600080fd5b505afa1580156107c4573d6000803e3d6000fd5b5050505061085f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633a5490466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085c9190611ca6565b90505b81158015610883575073ffffffffffffffffffffffffffffffffffffffff81811614155b1561093e573373ffffffffffffffffffffffffffffffffffffffff82161461093e5760405162461bcd60e51b815260206004820152604260248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206e65787420736560448201527f6c65637465642076616c696461746f722063616e207375626d6974206f75747060648201527f7574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6109466114d4565b86146109e05760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a401610935565b426109e961106f565b1115610a5d5760405162461bcd60e51b815260206004820152603560248201527f4c324f75747075744f7261636c653a2063616e6e6f74207375626d6974204c3260448201527f206f757470757420696e207468652066757475726500000000000000000000006064820152608401610935565b86610ad05760405162461bcd60e51b815260206004820152603c60248201527f4c324f75747075744f7261636c653a204c3220636865636b706f696e74206f7560448201527f747075742063616e6e6f7420626520746865207a65726f2068617368000000006064820152608401610935565b8415801590610adf5750834015155b15610b805784844014610b805760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a401610935565b60408051608081018252338152602081018981526fffffffffffffffffffffffffffffffff428181168486019081528b831660608601908152600380546001810182556000829052965196027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8101805473ffffffffffffffffffffffffffffffffffffffff989098167fffffffffffffffffffffffff00000000000000000000000000000000000000009098169790971790965593517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c86015551925182167001000000000000000000000000000000000292909116919091177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d909201919091559051879185918a917f457b4388026260019ae0b0b4f16c98235d74fe7359be469bdcba16e6d0d4968991610cd991815260200190565b60405180910390a48115610d8c576040517fbe119347000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063be11934790602401600060405180830381600087803b158015610d6f57600080fd5b505af1158015610d83573d6000803e3d6000fd5b50505050610e74565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663d38dc7ee84610df37f000000000000000000000000000000000000000000000000000000000000000042611cc3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526fffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050505b50505050505050565b60035460009061065c90600190611c37565b6000610e996105ee565b821115610f345760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f7375626d69747465640000000000000000000000000000000000000000000000608482015260a401610935565b600354610fcf5760405162461bcd60e51b815260206004820152604760248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e207375626d697460648201527f7465642079657400000000000000000000000000000000000000000000000000608482015260a401610935565b6003546000905b808210156110685760006002610fec8385611cc3565b610ff69190611cdb565b9050846003828154811061100c5761100c611c4e565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16101561105e57611057816001611cc3565b9250611062565b8091505b50610fd6565b5092915050565b600061065c61107c6114d4565b61054c906001611cc3565b604080516080810182526000808252602082018190529181018290526060810191909152600382815481106110be576110be611c4e565b6000918252602091829020604080516080810182526003909302909101805473ffffffffffffffffffffffffffffffffffffffff1683526001810154938301939093526002909201546fffffffffffffffffffffffffffffffff808216938301939093527001000000000000000000000000000000009004909116606082015292915050565b60007f00000000000000000000000000000000000000000000000000000000000000006003838154811061117a5761117a611c4e565b60009182526020909120600260039092020101546111aa91906fffffffffffffffffffffffffffffffff16611cc3565b92915050565b6000600382815481106111c5576111c5611c4e565b600091825260209091206003909102015473ffffffffffffffffffffffffffffffffffffffff1692915050565b6040517fad36d6cc000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ad36d6cc90602401602060405180830381865afa15801561127d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a19190611c7d565b1561137c573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146113775760405162461bcd60e51b815260206004820152605960248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f72206d616e6167657220636f6e74726163742063616e20736574206c61746560648201527f73742066696e616c697a6564206f757470757420696e64657800000000000000608482015260a401610935565b600455565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146113775760405162461bcd60e51b815260206004820152605660248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f7220706f6f6c20636f6e74726163742063616e20736574206c61746573742060648201527f66696e616c697a6564206f757470757420696e64657800000000000000000000608482015260a401610935565b604080516080810182526000808252602082018190529181018290526060810191909152600361147c83610e8f565b815481106110be576110be611c4e565b60007f0000000000000000000000000000000000000000000000000000000000000000600154836114bd9190611c37565b6114c79190611d16565b6002546111aa9190611cc3565b60035460009015611512577f00000000000000000000000000000000000000000000000000000000000000006115086105ee565b61065c9190611cc3565b61065c6105ee565b600054610100900460ff161580801561153a5750600054600160ff909116105b806115545750303b158015611554575060005460ff166001145b6115c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610935565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561162457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b428211156116c15760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a401610935565b60028290556001839055801561172e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146118045760405162461bcd60e51b815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c792074686520636f6c6f73736560448201527f756d20636f6e74726163742063616e207265706c61636520616e206f7574707560648201527f7400000000000000000000000000000000000000000000000000000000000000608482015260a401610935565b73ffffffffffffffffffffffffffffffffffffffff811661188d5760405162461bcd60e51b815260206004820152603060248201527f4c324f75747075744f7261636c653a207375626d69747465722061646472657360448201527f732063616e6e6f74206265207a65726f000000000000000000000000000000006064820152608401610935565b600354831061192a5760405162461bcd60e51b815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420616674657220746865206c6174657374206f757470757460648201527f20696e6465780000000000000000000000000000000000000000000000000000608482015260a401610935565b60006003848154811061193f5761193f611c4e565b6000918252602090912060039091020160028101549091507f000000000000000000000000000000000000000000000000000000000000000090611995906fffffffffffffffffffffffffffffffff1642611c37565b10611a2e5760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420746861742068617320616c7265616479206265656e206660648201527f696e616c697a6564000000000000000000000000000000000000000000000000608482015260a401610935565b6001810183905580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617815560405183815284907fa1b831bb8b6b242db6d0988a6d21f869c610de9f703a5e45e1b7d3dc3137b9069060200160405180910390a250505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600060208284031215611adc57600080fd5b5035919050565b600060208083528351808285015260005b81811015611b1057858101830151858201604001528201611af4565b81811115611b22576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060008060808587031215611b6c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611b9b57600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff81168114611bcc57600080fd5b50565b600080600060608486031215611be457600080fd5b83359250602084013591506040840135611bfd81611baa565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c4957611c49611c08565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c8f57600080fd5b81518015158114611c9f57600080fd5b9392505050565b600060208284031215611cb857600080fd5b8151611c9f81611baa565b60008219821115611cd657611cd6611c08565b500190565b600082611d11577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d4e57611d4e611c08565b50029056fea164736f6c634300080f000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_validatorPool\",\"type\":\"address\",\"internalType\":\"contractValidatorPool\"},{\"name\":\"_validatorManager\",\"type\":\"address\",\"internalType\":\"contractIValidatorManager\"},{\"name\":\"_colosseum\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_submissionInterval\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_l2BlockTime\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_startingBlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_startingTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_finalizationPeriodSeconds\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"COLOSSEUM\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FINALIZATION_PERIOD_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"L2_BLOCK_TIME\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SUBMISSION_INTERVAL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIValidatorManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_POOL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractValidatorPool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"computeL2Timestamp\",\"inputs\":[{\"name\":\"_l2BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"finalizedAt\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getL2Output\",\"inputs\":[{\"name\":\"_l2OutputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTypes.CheckpointOutput\",\"components\":[{\"name\":\"submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"outputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"l2BlockNumber\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getL2OutputAfter\",\"inputs\":[{\"name\":\"_l2BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTypes.CheckpointOutput\",\"components\":[{\"name\":\"submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"outputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"l2BlockNumber\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getL2OutputIndexAfter\",\"inputs\":[{\"name\":\"_l2BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSubmitter\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_startingBlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_startingTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isFinalized\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestOutputIndex\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextFinalizeOutputIndex\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextOutputIndex\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextOutputMinL2Timestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"replaceL2Output\",\"inputs\":[{\"name\":\"_l2OutputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_newOutputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setNextFinalizeOutputIndex\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startingBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"startingTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitL2Output\",\"inputs\":[{\"name\":\"_outputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l2BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_l1BlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OutputReplaced\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"newOutputRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OutputSubmitted\",\"inputs\":[{\"name\":\"outputRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"l2OutputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"l2BlockNumber\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"l1Timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x6101406040523480156200001257600080fd5b50604051620021d8380380620021d883398101604081905262000035916200034b565b60008411620000b15760405162461bcd60e51b815260206004820152603460248201527f4c324f75747075744f7261636c653a204c3220626c6f636b2074696d65206d7560448201527f73742062652067726561746572207468616e203000000000000000000000000060648201526084015b60405180910390fd5b60008511620001295760405162461bcd60e51b815260206004820152603a60248201527f4c324f75747075744f7261636c653a207375626d697373696f6e20696e74657260448201527f76616c206d7573742062652067726561746572207468616e20300000000000006064820152608401620000a8565b6001600160a01b0380891660805287811660a052861660c05260e08590526101008490526101208190526200015f83836200016d565b5050505050505050620003cf565b600054610100900460ff16158080156200018e5750600054600160ff909116105b80620001be5750620001ab306200032360201b62001aa51760201c565b158015620001be575060005460ff166001145b620002235760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000a8565b6000805460ff19166001179055801562000247576000805461ff0019166101001790555b42821115620002cd5760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201526374696d6560e01b608482015260a401620000a8565b6002829055600183905580156200031e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b6001600160a01b03811681146200034857600080fd5b50565b600080600080600080600080610100898b0312156200036957600080fd5b8851620003768162000332565b60208a0151909850620003898162000332565b60408a01519097506200039c8162000332565b60608a015160808b015160a08c015160c08d015160e0909d01519b9e9a9d50929b919a9099929850909650945092505050565b60805160a05160c05160e0516101005161012051611d5762000481600039600081816105b801528181610dce0152818161139a01526119500152600081816101b7015261148701526000818161024301526114d801526000818161038d01526117420152600081816104850152818161075901528181610d16015261114a0152600081816104d9015281816106b6015281816107cf01528181610da30152818161109e01526112200152611d576000f3fe6080604052600436106101a05760003560e01c80639e45e8f4116100e1578063cf8e5cf01161008a578063e4a3011611610064578063e4a3011614610550578063e664672314610570578063f403838d14610590578063f4daa291146105a657600080fd5b8063cf8e5cf0146104fb578063d1de856c1461051b578063dcec33481461053b57600080fd5b8063ae9483e0116100bb578063ae9483e014610473578063b0ea09a8146104a7578063b98debbf146104c757600080fd5b80639e45e8f41461037b578063a25ae557146103d4578063a48ea6de1461045357600080fd5b806369f16eec1161014e5780637f006420116101285780637f0064201461031057806380446bd21461033057806388786272146103455780639902cdc01461035b57600080fd5b806369f16eec146102d05780636abcf563146102e557806370872aa5146102fa57600080fd5b8063529933df1161017f578063529933df1461023157806354fd4d50146102655780635a045f78146102bb57600080fd5b80622134cc146101a557806333727c4d146101ec5780634599c7881461021c575b600080fd5b3480156101b157600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b3480156101f857600080fd5b5061020c610207366004611ac1565b6105da565b60405190151581526020016101e3565b34801561022857600080fd5b506101d96105ee565b34801561023d57600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b34801561027157600080fd5b506102ae6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101e39190611ada565b6102ce6102c9366004611b4d565b610661565b005b3480156102dc57600080fd5b506101d9610e7d565b3480156102f157600080fd5b506003546101d9565b34801561030657600080fd5b506101d960015481565b34801561031c57600080fd5b506101d961032b366004611ac1565b610e8f565b34801561033c57600080fd5b506101d961106f565b34801561035157600080fd5b506101d960025481565b34801561036757600080fd5b506102ce610376366004611ac1565b611087565b34801561038757600080fd5b506103af7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e3565b3480156103e057600080fd5b506103f46103ef366004611ac1565b6112d9565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015190820152828201516fffffffffffffffffffffffffffffffff90811692820192909252606092830151909116918101919091526080016101e3565b34801561045f57600080fd5b506101d961046e366004611ac1565b611396565b34801561047f57600080fd5b506103af7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b357600080fd5b506103af6104c2366004611ac1565b611402565b3480156104d357600080fd5b506103af7f000000000000000000000000000000000000000000000000000000000000000081565b34801561050757600080fd5b506103f4610516366004611ac1565b611444565b34801561052757600080fd5b506101d9610536366004611ac1565b611483565b34801561054757600080fd5b506101d96114cb565b34801561055c57600080fd5b506102ce61056b366004611b7f565b611511565b34801561057c57600080fd5b506102ce61058b366004611bc6565b61172a565b34801561059c57600080fd5b506101d960045481565b3480156105b257600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b6000426105e683611396565b111592915050565b60035460009015610658576003805461060990600190611c2e565b8154811061061957610619611c45565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b600061066c60035490565b6040517fad36d6cc0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ad36d6cc90602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190611c74565b9050600081156107cd576040517f891aab740000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063891aab749060240160006040518083038186803b1580156107b057600080fd5b505afa1580156107c4573d6000803e3d6000fd5b5050505061085f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633a5490466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085c9190611c9d565b90505b81158015610883575073ffffffffffffffffffffffffffffffffffffffff81811614155b1561093e573373ffffffffffffffffffffffffffffffffffffffff82161461093e5760405162461bcd60e51b815260206004820152604260248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206e65787420736560448201527f6c65637465642076616c696461746f722063616e207375626d6974206f75747060648201527f7574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6109466114cb565b86146109e05760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a401610935565b426109e961106f565b1115610a5d5760405162461bcd60e51b815260206004820152603560248201527f4c324f75747075744f7261636c653a2063616e6e6f74207375626d6974204c3260448201527f206f757470757420696e207468652066757475726500000000000000000000006064820152608401610935565b86610ad05760405162461bcd60e51b815260206004820152603c60248201527f4c324f75747075744f7261636c653a204c3220636865636b706f696e74206f7560448201527f747075742063616e6e6f7420626520746865207a65726f2068617368000000006064820152608401610935565b8415801590610adf5750834015155b15610b805784844014610b805760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a401610935565b60408051608081018252338152602081018981526fffffffffffffffffffffffffffffffff428181168486019081528b831660608601908152600380546001810182556000829052965196027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8101805473ffffffffffffffffffffffffffffffffffffffff989098167fffffffffffffffffffffffff00000000000000000000000000000000000000009098169790971790965593517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c86015551925182167001000000000000000000000000000000000292909116919091177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d909201919091559051879185918a917f457b4388026260019ae0b0b4f16c98235d74fe7359be469bdcba16e6d0d4968991610cd991815260200190565b60405180910390a48115610d8c576040517fbe119347000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063be11934790602401600060405180830381600087803b158015610d6f57600080fd5b505af1158015610d83573d6000803e3d6000fd5b50505050610e74565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663d38dc7ee84610df37f000000000000000000000000000000000000000000000000000000000000000042611cba565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526fffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050505b50505050505050565b60035460009061065c90600190611c2e565b6000610e996105ee565b821115610f345760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f7375626d69747465640000000000000000000000000000000000000000000000608482015260a401610935565b600354610fcf5760405162461bcd60e51b815260206004820152604760248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e207375626d697460648201527f7465642079657400000000000000000000000000000000000000000000000000608482015260a401610935565b6003546000905b808210156110685760006002610fec8385611cba565b610ff69190611cd2565b9050846003828154811061100c5761100c611c45565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16101561105e57611057816001611cba565b9250611062565b8091505b50610fd6565b5092915050565b600061065c61107c6114cb565b610536906001611cba565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663ad36d6cc6110ce600184611c2e565b6040518263ffffffff1660e01b81526004016110ec91815260200190565b602060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611c74565b15611208573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146112035760405162461bcd60e51b815260206004820152605660248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f72206d616e6167657220636f6e74726163742063616e20736574206e65787460648201527f2066696e616c697a65206f757470757420696e64657800000000000000000000608482015260a401610935565b600455565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146112035760405162461bcd60e51b815260206004820152605360248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f7220706f6f6c20636f6e74726163742063616e20736574206e65787420666960648201527f6e616c697a65206f757470757420696e64657800000000000000000000000000608482015260a401610935565b6040805160808101825260008082526020820181905291810182905260608101919091526003828154811061131057611310611c45565b6000918252602091829020604080516080810182526003909302909101805473ffffffffffffffffffffffffffffffffffffffff1683526001810154938301939093526002909201546fffffffffffffffffffffffffffffffff808216938301939093527001000000000000000000000000000000009004909116606082015292915050565b60007f0000000000000000000000000000000000000000000000000000000000000000600383815481106113cc576113cc611c45565b60009182526020909120600260039092020101546113fc91906fffffffffffffffffffffffffffffffff16611cba565b92915050565b60006003828154811061141757611417611c45565b600091825260209091206003909102015473ffffffffffffffffffffffffffffffffffffffff1692915050565b604080516080810182526000808252602082018190529181018290526060810191909152600361147383610e8f565b8154811061131057611310611c45565b60007f0000000000000000000000000000000000000000000000000000000000000000600154836114b49190611c2e565b6114be9190611d0d565b6002546113fc9190611cba565b60035460009015611509577f00000000000000000000000000000000000000000000000000000000000000006114ff6105ee565b61065c9190611cba565b61065c6105ee565b600054610100900460ff16158080156115315750600054600160ff909116105b8061154b5750303b15801561154b575060005460ff166001145b6115bd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610935565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561161b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b428211156116b85760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a401610935565b60028290556001839055801561172557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146117fb5760405162461bcd60e51b815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c792074686520636f6c6f73736560448201527f756d20636f6e74726163742063616e207265706c61636520616e206f7574707560648201527f7400000000000000000000000000000000000000000000000000000000000000608482015260a401610935565b73ffffffffffffffffffffffffffffffffffffffff81166118845760405162461bcd60e51b815260206004820152603060248201527f4c324f75747075744f7261636c653a207375626d69747465722061646472657360448201527f732063616e6e6f74206265207a65726f000000000000000000000000000000006064820152608401610935565b60035483106119215760405162461bcd60e51b815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420616674657220746865206c6174657374206f757470757460648201527f20696e6465780000000000000000000000000000000000000000000000000000608482015260a401610935565b60006003848154811061193657611936611c45565b6000918252602090912060039091020160028101549091507f00000000000000000000000000000000000000000000000000000000000000009061198c906fffffffffffffffffffffffffffffffff1642611c2e565b10611a255760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420746861742068617320616c7265616479206265656e206660648201527f696e616c697a6564000000000000000000000000000000000000000000000000608482015260a401610935565b6001810183905580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617815560405183815284907fa1b831bb8b6b242db6d0988a6d21f869c610de9f703a5e45e1b7d3dc3137b9069060200160405180910390a250505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600060208284031215611ad357600080fd5b5035919050565b600060208083528351808285015260005b81811015611b0757858101830151858201604001528201611aeb565b81811115611b19576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060008060808587031215611b6357600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611b9257600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff81168114611bc357600080fd5b50565b600080600060608486031215611bdb57600080fd5b83359250602084013591506040840135611bf481611ba1565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c4057611c40611bff565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c8657600080fd5b81518015158114611c9657600080fd5b9392505050565b600060208284031215611caf57600080fd5b8151611c9681611ba1565b60008219821115611ccd57611ccd611bff565b500190565b600082611d08577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d4557611d45611bff565b50029056fea164736f6c634300080f000a", } // L2OutputOracleABI is the input ABI used to generate the binding from. @@ -636,37 +636,6 @@ func (_L2OutputOracle *L2OutputOracleCallerSession) LatestBlockNumber() (*big.In return _L2OutputOracle.Contract.LatestBlockNumber(&_L2OutputOracle.CallOpts) } -// LatestFinalizedOutputIndex is a free data retrieval call binding the contract method 0x3f98365b. -// -// Solidity: function latestFinalizedOutputIndex() view returns(uint256) -func (_L2OutputOracle *L2OutputOracleCaller) LatestFinalizedOutputIndex(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _L2OutputOracle.contract.Call(opts, &out, "latestFinalizedOutputIndex") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// LatestFinalizedOutputIndex is a free data retrieval call binding the contract method 0x3f98365b. -// -// Solidity: function latestFinalizedOutputIndex() view returns(uint256) -func (_L2OutputOracle *L2OutputOracleSession) LatestFinalizedOutputIndex() (*big.Int, error) { - return _L2OutputOracle.Contract.LatestFinalizedOutputIndex(&_L2OutputOracle.CallOpts) -} - -// LatestFinalizedOutputIndex is a free data retrieval call binding the contract method 0x3f98365b. -// -// Solidity: function latestFinalizedOutputIndex() view returns(uint256) -func (_L2OutputOracle *L2OutputOracleCallerSession) LatestFinalizedOutputIndex() (*big.Int, error) { - return _L2OutputOracle.Contract.LatestFinalizedOutputIndex(&_L2OutputOracle.CallOpts) -} - // LatestOutputIndex is a free data retrieval call binding the contract method 0x69f16eec. // // Solidity: function latestOutputIndex() view returns(uint256) @@ -729,6 +698,37 @@ func (_L2OutputOracle *L2OutputOracleCallerSession) NextBlockNumber() (*big.Int, return _L2OutputOracle.Contract.NextBlockNumber(&_L2OutputOracle.CallOpts) } +// NextFinalizeOutputIndex is a free data retrieval call binding the contract method 0xf403838d. +// +// Solidity: function nextFinalizeOutputIndex() view returns(uint256) +func (_L2OutputOracle *L2OutputOracleCaller) NextFinalizeOutputIndex(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _L2OutputOracle.contract.Call(opts, &out, "nextFinalizeOutputIndex") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NextFinalizeOutputIndex is a free data retrieval call binding the contract method 0xf403838d. +// +// Solidity: function nextFinalizeOutputIndex() view returns(uint256) +func (_L2OutputOracle *L2OutputOracleSession) NextFinalizeOutputIndex() (*big.Int, error) { + return _L2OutputOracle.Contract.NextFinalizeOutputIndex(&_L2OutputOracle.CallOpts) +} + +// NextFinalizeOutputIndex is a free data retrieval call binding the contract method 0xf403838d. +// +// Solidity: function nextFinalizeOutputIndex() view returns(uint256) +func (_L2OutputOracle *L2OutputOracleCallerSession) NextFinalizeOutputIndex() (*big.Int, error) { + return _L2OutputOracle.Contract.NextFinalizeOutputIndex(&_L2OutputOracle.CallOpts) +} + // NextOutputIndex is a free data retrieval call binding the contract method 0x6abcf563. // // Solidity: function nextOutputIndex() view returns(uint256) @@ -926,25 +926,25 @@ func (_L2OutputOracle *L2OutputOracleTransactorSession) ReplaceL2Output(_l2Outpu return _L2OutputOracle.Contract.ReplaceL2Output(&_L2OutputOracle.TransactOpts, _l2OutputIndex, _newOutputRoot, _submitter) } -// SetLatestFinalizedOutputIndex is a paid mutator transaction binding the contract method 0xb4c302ff. +// SetNextFinalizeOutputIndex is a paid mutator transaction binding the contract method 0x9902cdc0. // -// Solidity: function setLatestFinalizedOutputIndex(uint256 _outputIndex) returns() -func (_L2OutputOracle *L2OutputOracleTransactor) SetLatestFinalizedOutputIndex(opts *bind.TransactOpts, _outputIndex *big.Int) (*types.Transaction, error) { - return _L2OutputOracle.contract.Transact(opts, "setLatestFinalizedOutputIndex", _outputIndex) +// Solidity: function setNextFinalizeOutputIndex(uint256 _outputIndex) returns() +func (_L2OutputOracle *L2OutputOracleTransactor) SetNextFinalizeOutputIndex(opts *bind.TransactOpts, _outputIndex *big.Int) (*types.Transaction, error) { + return _L2OutputOracle.contract.Transact(opts, "setNextFinalizeOutputIndex", _outputIndex) } -// SetLatestFinalizedOutputIndex is a paid mutator transaction binding the contract method 0xb4c302ff. +// SetNextFinalizeOutputIndex is a paid mutator transaction binding the contract method 0x9902cdc0. // -// Solidity: function setLatestFinalizedOutputIndex(uint256 _outputIndex) returns() -func (_L2OutputOracle *L2OutputOracleSession) SetLatestFinalizedOutputIndex(_outputIndex *big.Int) (*types.Transaction, error) { - return _L2OutputOracle.Contract.SetLatestFinalizedOutputIndex(&_L2OutputOracle.TransactOpts, _outputIndex) +// Solidity: function setNextFinalizeOutputIndex(uint256 _outputIndex) returns() +func (_L2OutputOracle *L2OutputOracleSession) SetNextFinalizeOutputIndex(_outputIndex *big.Int) (*types.Transaction, error) { + return _L2OutputOracle.Contract.SetNextFinalizeOutputIndex(&_L2OutputOracle.TransactOpts, _outputIndex) } -// SetLatestFinalizedOutputIndex is a paid mutator transaction binding the contract method 0xb4c302ff. +// SetNextFinalizeOutputIndex is a paid mutator transaction binding the contract method 0x9902cdc0. // -// Solidity: function setLatestFinalizedOutputIndex(uint256 _outputIndex) returns() -func (_L2OutputOracle *L2OutputOracleTransactorSession) SetLatestFinalizedOutputIndex(_outputIndex *big.Int) (*types.Transaction, error) { - return _L2OutputOracle.Contract.SetLatestFinalizedOutputIndex(&_L2OutputOracle.TransactOpts, _outputIndex) +// Solidity: function setNextFinalizeOutputIndex(uint256 _outputIndex) returns() +func (_L2OutputOracle *L2OutputOracleTransactorSession) SetNextFinalizeOutputIndex(_outputIndex *big.Int) (*types.Transaction, error) { + return _L2OutputOracle.Contract.SetNextFinalizeOutputIndex(&_L2OutputOracle.TransactOpts, _outputIndex) } // SubmitL2Output is a paid mutator transaction binding the contract method 0x5a045f78. diff --git a/kroma-bindings/bindings/l2outputoracle_more.go b/kroma-bindings/bindings/l2outputoracle_more.go index 8401ca272..dc75f4f6e 100644 --- a/kroma-bindings/bindings/l2outputoracle_more.go +++ b/kroma-bindings/bindings/l2outputoracle_more.go @@ -9,12 +9,11 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const L2OutputOracleStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"startingBlockNumber\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_uint256\"},{\"astId\":1003,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"startingTimestamp\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_uint256\"},{\"astId\":1004,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"l2Outputs\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_array(t_struct(CheckpointOutput)1006_storage)dyn_storage\"},{\"astId\":1005,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"latestFinalizedOutputIndex\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_uint256\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_struct(CheckpointOutput)1006_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct Types.CheckpointOutput[]\",\"numberOfBytes\":\"32\",\"base\":\"t_struct(CheckpointOutput)1006_storage\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_struct(CheckpointOutput)1006_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Types.CheckpointOutput\",\"numberOfBytes\":\"96\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" +const L2OutputOracleStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"startingBlockNumber\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_uint256\"},{\"astId\":1003,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"startingTimestamp\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_uint256\"},{\"astId\":1004,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"l2Outputs\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_array(t_struct(CheckpointOutput)1006_storage)dyn_storage\"},{\"astId\":1005,\"contract\":\"contracts/L1/L2OutputOracle.sol:L2OutputOracle\",\"label\":\"nextFinalizeOutputIndex\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_uint256\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_struct(CheckpointOutput)1006_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct Types.CheckpointOutput[]\",\"numberOfBytes\":\"32\",\"base\":\"t_struct(CheckpointOutput)1006_storage\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_struct(CheckpointOutput)1006_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Types.CheckpointOutput\",\"numberOfBytes\":\"96\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" var L2OutputOracleStorageLayout = new(solc.StorageLayout) -var L2OutputOracleDeployedBin = "0x6080604052600436106101a05760003560e01c80639e45e8f4116100e1578063b98debbf1161008a578063dcec334811610064578063dcec334814610551578063e4a3011614610566578063e664672314610586578063f4daa291146105a657600080fd5b8063b98debbf146104dd578063cf8e5cf014610511578063d1de856c1461053157600080fd5b8063ae9483e0116100bb578063ae9483e014610469578063b0ea09a81461049d578063b4c302ff146104bd57600080fd5b80639e45e8f414610371578063a25ae557146103ca578063a48ea6de1461044957600080fd5b80635a045f781161014e57806370872aa51161012857806370872aa5146103105780637f0064201461032657806380446bd214610346578063887862721461035b57600080fd5b80635a045f78146102d157806369f16eec146102e65780636abcf563146102fb57600080fd5b80634599c7881161017f5780634599c78814610232578063529933df1461024757806354fd4d501461027b57600080fd5b80622134cc146101a557806333727c4d146101ec5780633f98365b1461021c575b600080fd5b3480156101b157600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b3480156101f857600080fd5b5061020c610207366004611aca565b6105da565b60405190151581526020016101e3565b34801561022857600080fd5b506101d960045481565b34801561023e57600080fd5b506101d96105ee565b34801561025357600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b34801561028757600080fd5b506102c46040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101e39190611ae3565b6102e46102df366004611b56565b610661565b005b3480156102f257600080fd5b506101d9610e7d565b34801561030757600080fd5b506003546101d9565b34801561031c57600080fd5b506101d960015481565b34801561033257600080fd5b506101d9610341366004611aca565b610e8f565b34801561035257600080fd5b506101d961106f565b34801561036757600080fd5b506101d960025481565b34801561037d57600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e3565b3480156103d657600080fd5b506103ea6103e5366004611aca565b611087565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015190820152828201516fffffffffffffffffffffffffffffffff90811692820192909252606092830151909116918101919091526080016101e3565b34801561045557600080fd5b506101d9610464366004611aca565b611144565b34801561047557600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a957600080fd5b506103a56104b8366004611aca565b6111b0565b3480156104c957600080fd5b506102e46104d8366004611aca565b6111f2565b3480156104e957600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561051d57600080fd5b506103ea61052c366004611aca565b61144d565b34801561053d57600080fd5b506101d961054c366004611aca565b61148c565b34801561055d57600080fd5b506101d96114d4565b34801561057257600080fd5b506102e4610581366004611b88565b61151a565b34801561059257600080fd5b506102e46105a1366004611bcf565b611733565b3480156105b257600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b6000426105e683611144565b111592915050565b60035460009015610658576003805461060990600190611c37565b8154811061061957610619611c4e565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b600061066c60035490565b6040517fad36d6cc0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ad36d6cc90602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190611c7d565b9050600081156107cd576040517f891aab740000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063891aab749060240160006040518083038186803b1580156107b057600080fd5b505afa1580156107c4573d6000803e3d6000fd5b5050505061085f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633a5490466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085c9190611ca6565b90505b81158015610883575073ffffffffffffffffffffffffffffffffffffffff81811614155b1561093e573373ffffffffffffffffffffffffffffffffffffffff82161461093e5760405162461bcd60e51b815260206004820152604260248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206e65787420736560448201527f6c65637465642076616c696461746f722063616e207375626d6974206f75747060648201527f7574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6109466114d4565b86146109e05760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a401610935565b426109e961106f565b1115610a5d5760405162461bcd60e51b815260206004820152603560248201527f4c324f75747075744f7261636c653a2063616e6e6f74207375626d6974204c3260448201527f206f757470757420696e207468652066757475726500000000000000000000006064820152608401610935565b86610ad05760405162461bcd60e51b815260206004820152603c60248201527f4c324f75747075744f7261636c653a204c3220636865636b706f696e74206f7560448201527f747075742063616e6e6f7420626520746865207a65726f2068617368000000006064820152608401610935565b8415801590610adf5750834015155b15610b805784844014610b805760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a401610935565b60408051608081018252338152602081018981526fffffffffffffffffffffffffffffffff428181168486019081528b831660608601908152600380546001810182556000829052965196027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8101805473ffffffffffffffffffffffffffffffffffffffff989098167fffffffffffffffffffffffff00000000000000000000000000000000000000009098169790971790965593517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c86015551925182167001000000000000000000000000000000000292909116919091177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d909201919091559051879185918a917f457b4388026260019ae0b0b4f16c98235d74fe7359be469bdcba16e6d0d4968991610cd991815260200190565b60405180910390a48115610d8c576040517fbe119347000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063be11934790602401600060405180830381600087803b158015610d6f57600080fd5b505af1158015610d83573d6000803e3d6000fd5b50505050610e74565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663d38dc7ee84610df37f000000000000000000000000000000000000000000000000000000000000000042611cc3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526fffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050505b50505050505050565b60035460009061065c90600190611c37565b6000610e996105ee565b821115610f345760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f7375626d69747465640000000000000000000000000000000000000000000000608482015260a401610935565b600354610fcf5760405162461bcd60e51b815260206004820152604760248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e207375626d697460648201527f7465642079657400000000000000000000000000000000000000000000000000608482015260a401610935565b6003546000905b808210156110685760006002610fec8385611cc3565b610ff69190611cdb565b9050846003828154811061100c5761100c611c4e565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16101561105e57611057816001611cc3565b9250611062565b8091505b50610fd6565b5092915050565b600061065c61107c6114d4565b61054c906001611cc3565b604080516080810182526000808252602082018190529181018290526060810191909152600382815481106110be576110be611c4e565b6000918252602091829020604080516080810182526003909302909101805473ffffffffffffffffffffffffffffffffffffffff1683526001810154938301939093526002909201546fffffffffffffffffffffffffffffffff808216938301939093527001000000000000000000000000000000009004909116606082015292915050565b60007f00000000000000000000000000000000000000000000000000000000000000006003838154811061117a5761117a611c4e565b60009182526020909120600260039092020101546111aa91906fffffffffffffffffffffffffffffffff16611cc3565b92915050565b6000600382815481106111c5576111c5611c4e565b600091825260209091206003909102015473ffffffffffffffffffffffffffffffffffffffff1692915050565b6040517fad36d6cc000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ad36d6cc90602401602060405180830381865afa15801561127d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a19190611c7d565b1561137c573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146113775760405162461bcd60e51b815260206004820152605960248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f72206d616e6167657220636f6e74726163742063616e20736574206c61746560648201527f73742066696e616c697a6564206f757470757420696e64657800000000000000608482015260a401610935565b600455565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146113775760405162461bcd60e51b815260206004820152605660248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f7220706f6f6c20636f6e74726163742063616e20736574206c61746573742060648201527f66696e616c697a6564206f757470757420696e64657800000000000000000000608482015260a401610935565b604080516080810182526000808252602082018190529181018290526060810191909152600361147c83610e8f565b815481106110be576110be611c4e565b60007f0000000000000000000000000000000000000000000000000000000000000000600154836114bd9190611c37565b6114c79190611d16565b6002546111aa9190611cc3565b60035460009015611512577f00000000000000000000000000000000000000000000000000000000000000006115086105ee565b61065c9190611cc3565b61065c6105ee565b600054610100900460ff161580801561153a5750600054600160ff909116105b806115545750303b158015611554575060005460ff166001145b6115c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610935565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561162457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b428211156116c15760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a401610935565b60028290556001839055801561172e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146118045760405162461bcd60e51b815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c792074686520636f6c6f73736560448201527f756d20636f6e74726163742063616e207265706c61636520616e206f7574707560648201527f7400000000000000000000000000000000000000000000000000000000000000608482015260a401610935565b73ffffffffffffffffffffffffffffffffffffffff811661188d5760405162461bcd60e51b815260206004820152603060248201527f4c324f75747075744f7261636c653a207375626d69747465722061646472657360448201527f732063616e6e6f74206265207a65726f000000000000000000000000000000006064820152608401610935565b600354831061192a5760405162461bcd60e51b815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420616674657220746865206c6174657374206f757470757460648201527f20696e6465780000000000000000000000000000000000000000000000000000608482015260a401610935565b60006003848154811061193f5761193f611c4e565b6000918252602090912060039091020160028101549091507f000000000000000000000000000000000000000000000000000000000000000090611995906fffffffffffffffffffffffffffffffff1642611c37565b10611a2e5760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420746861742068617320616c7265616479206265656e206660648201527f696e616c697a6564000000000000000000000000000000000000000000000000608482015260a401610935565b6001810183905580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617815560405183815284907fa1b831bb8b6b242db6d0988a6d21f869c610de9f703a5e45e1b7d3dc3137b9069060200160405180910390a250505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600060208284031215611adc57600080fd5b5035919050565b600060208083528351808285015260005b81811015611b1057858101830151858201604001528201611af4565b81811115611b22576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060008060808587031215611b6c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611b9b57600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff81168114611bcc57600080fd5b50565b600080600060608486031215611be457600080fd5b83359250602084013591506040840135611bfd81611baa565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c4957611c49611c08565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c8f57600080fd5b81518015158114611c9f57600080fd5b9392505050565b600060208284031215611cb857600080fd5b8151611c9f81611baa565b60008219821115611cd657611cd6611c08565b500190565b600082611d11577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d4e57611d4e611c08565b50029056fea164736f6c634300080f000a" - +var L2OutputOracleDeployedBin = "0x6080604052600436106101a05760003560e01c80639e45e8f4116100e1578063cf8e5cf01161008a578063e4a3011611610064578063e4a3011614610550578063e664672314610570578063f403838d14610590578063f4daa291146105a657600080fd5b8063cf8e5cf0146104fb578063d1de856c1461051b578063dcec33481461053b57600080fd5b8063ae9483e0116100bb578063ae9483e014610473578063b0ea09a8146104a7578063b98debbf146104c757600080fd5b80639e45e8f41461037b578063a25ae557146103d4578063a48ea6de1461045357600080fd5b806369f16eec1161014e5780637f006420116101285780637f0064201461031057806380446bd21461033057806388786272146103455780639902cdc01461035b57600080fd5b806369f16eec146102d05780636abcf563146102e557806370872aa5146102fa57600080fd5b8063529933df1161017f578063529933df1461023157806354fd4d50146102655780635a045f78146102bb57600080fd5b80622134cc146101a557806333727c4d146101ec5780634599c7881461021c575b600080fd5b3480156101b157600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b3480156101f857600080fd5b5061020c610207366004611ac1565b6105da565b60405190151581526020016101e3565b34801561022857600080fd5b506101d96105ee565b34801561023d57600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b34801561027157600080fd5b506102ae6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101e39190611ada565b6102ce6102c9366004611b4d565b610661565b005b3480156102dc57600080fd5b506101d9610e7d565b3480156102f157600080fd5b506003546101d9565b34801561030657600080fd5b506101d960015481565b34801561031c57600080fd5b506101d961032b366004611ac1565b610e8f565b34801561033c57600080fd5b506101d961106f565b34801561035157600080fd5b506101d960025481565b34801561036757600080fd5b506102ce610376366004611ac1565b611087565b34801561038757600080fd5b506103af7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e3565b3480156103e057600080fd5b506103f46103ef366004611ac1565b6112d9565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015190820152828201516fffffffffffffffffffffffffffffffff90811692820192909252606092830151909116918101919091526080016101e3565b34801561045f57600080fd5b506101d961046e366004611ac1565b611396565b34801561047f57600080fd5b506103af7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b357600080fd5b506103af6104c2366004611ac1565b611402565b3480156104d357600080fd5b506103af7f000000000000000000000000000000000000000000000000000000000000000081565b34801561050757600080fd5b506103f4610516366004611ac1565b611444565b34801561052757600080fd5b506101d9610536366004611ac1565b611483565b34801561054757600080fd5b506101d96114cb565b34801561055c57600080fd5b506102ce61056b366004611b7f565b611511565b34801561057c57600080fd5b506102ce61058b366004611bc6565b61172a565b34801561059c57600080fd5b506101d960045481565b3480156105b257600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000081565b6000426105e683611396565b111592915050565b60035460009015610658576003805461060990600190611c2e565b8154811061061957610619611c45565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b600061066c60035490565b6040517fad36d6cc0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ad36d6cc90602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190611c74565b9050600081156107cd576040517f891aab740000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063891aab749060240160006040518083038186803b1580156107b057600080fd5b505afa1580156107c4573d6000803e3d6000fd5b5050505061085f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633a5490466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085c9190611c9d565b90505b81158015610883575073ffffffffffffffffffffffffffffffffffffffff81811614155b1561093e573373ffffffffffffffffffffffffffffffffffffffff82161461093e5760405162461bcd60e51b815260206004820152604260248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206e65787420736560448201527f6c65637465642076616c696461746f722063616e207375626d6974206f75747060648201527f7574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6109466114cb565b86146109e05760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a401610935565b426109e961106f565b1115610a5d5760405162461bcd60e51b815260206004820152603560248201527f4c324f75747075744f7261636c653a2063616e6e6f74207375626d6974204c3260448201527f206f757470757420696e207468652066757475726500000000000000000000006064820152608401610935565b86610ad05760405162461bcd60e51b815260206004820152603c60248201527f4c324f75747075744f7261636c653a204c3220636865636b706f696e74206f7560448201527f747075742063616e6e6f7420626520746865207a65726f2068617368000000006064820152608401610935565b8415801590610adf5750834015155b15610b805784844014610b805760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a401610935565b60408051608081018252338152602081018981526fffffffffffffffffffffffffffffffff428181168486019081528b831660608601908152600380546001810182556000829052965196027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8101805473ffffffffffffffffffffffffffffffffffffffff989098167fffffffffffffffffffffffff00000000000000000000000000000000000000009098169790971790965593517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c86015551925182167001000000000000000000000000000000000292909116919091177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d909201919091559051879185918a917f457b4388026260019ae0b0b4f16c98235d74fe7359be469bdcba16e6d0d4968991610cd991815260200190565b60405180910390a48115610d8c576040517fbe119347000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063be11934790602401600060405180830381600087803b158015610d6f57600080fd5b505af1158015610d83573d6000803e3d6000fd5b50505050610e74565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663d38dc7ee84610df37f000000000000000000000000000000000000000000000000000000000000000042611cba565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526fffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050505b50505050505050565b60035460009061065c90600190611c2e565b6000610e996105ee565b821115610f345760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f7375626d69747465640000000000000000000000000000000000000000000000608482015260a401610935565b600354610fcf5760405162461bcd60e51b815260206004820152604760248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e207375626d697460648201527f7465642079657400000000000000000000000000000000000000000000000000608482015260a401610935565b6003546000905b808210156110685760006002610fec8385611cba565b610ff69190611cd2565b9050846003828154811061100c5761100c611c45565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16101561105e57611057816001611cba565b9250611062565b8091505b50610fd6565b5092915050565b600061065c61107c6114cb565b610536906001611cba565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663ad36d6cc6110ce600184611c2e565b6040518263ffffffff1660e01b81526004016110ec91815260200190565b602060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611c74565b15611208573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146112035760405162461bcd60e51b815260206004820152605660248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f72206d616e6167657220636f6e74726163742063616e20736574206e65787460648201527f2066696e616c697a65206f757470757420696e64657800000000000000000000608482015260a401610935565b600455565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146112035760405162461bcd60e51b815260206004820152605360248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f7220706f6f6c20636f6e74726163742063616e20736574206e65787420666960648201527f6e616c697a65206f757470757420696e64657800000000000000000000000000608482015260a401610935565b6040805160808101825260008082526020820181905291810182905260608101919091526003828154811061131057611310611c45565b6000918252602091829020604080516080810182526003909302909101805473ffffffffffffffffffffffffffffffffffffffff1683526001810154938301939093526002909201546fffffffffffffffffffffffffffffffff808216938301939093527001000000000000000000000000000000009004909116606082015292915050565b60007f0000000000000000000000000000000000000000000000000000000000000000600383815481106113cc576113cc611c45565b60009182526020909120600260039092020101546113fc91906fffffffffffffffffffffffffffffffff16611cba565b92915050565b60006003828154811061141757611417611c45565b600091825260209091206003909102015473ffffffffffffffffffffffffffffffffffffffff1692915050565b604080516080810182526000808252602082018190529181018290526060810191909152600361147383610e8f565b8154811061131057611310611c45565b60007f0000000000000000000000000000000000000000000000000000000000000000600154836114b49190611c2e565b6114be9190611d0d565b6002546113fc9190611cba565b60035460009015611509577f00000000000000000000000000000000000000000000000000000000000000006114ff6105ee565b61065c9190611cba565b61065c6105ee565b600054610100900460ff16158080156115315750600054600160ff909116105b8061154b5750303b15801561154b575060005460ff166001145b6115bd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610935565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561161b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b428211156116b85760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a401610935565b60028290556001839055801561172557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146117fb5760405162461bcd60e51b815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c792074686520636f6c6f73736560448201527f756d20636f6e74726163742063616e207265706c61636520616e206f7574707560648201527f7400000000000000000000000000000000000000000000000000000000000000608482015260a401610935565b73ffffffffffffffffffffffffffffffffffffffff81166118845760405162461bcd60e51b815260206004820152603060248201527f4c324f75747075744f7261636c653a207375626d69747465722061646472657360448201527f732063616e6e6f74206265207a65726f000000000000000000000000000000006064820152608401610935565b60035483106119215760405162461bcd60e51b815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420616674657220746865206c6174657374206f757470757460648201527f20696e6465780000000000000000000000000000000000000000000000000000608482015260a401610935565b60006003848154811061193657611936611c45565b6000918252602090912060039091020160028101549091507f00000000000000000000000000000000000000000000000000000000000000009061198c906fffffffffffffffffffffffffffffffff1642611c2e565b10611a255760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420746861742068617320616c7265616479206265656e206660648201527f696e616c697a6564000000000000000000000000000000000000000000000000608482015260a401610935565b6001810183905580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617815560405183815284907fa1b831bb8b6b242db6d0988a6d21f869c610de9f703a5e45e1b7d3dc3137b9069060200160405180910390a250505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600060208284031215611ad357600080fd5b5035919050565b600060208083528351808285015260005b81811015611b0757858101830151858201604001528201611aeb565b81811115611b19576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060008060808587031215611b6357600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611b9257600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff81168114611bc357600080fd5b50565b600080600060608486031215611bdb57600080fd5b83359250602084013591506040840135611bf481611ba1565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c4057611c40611bff565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c8657600080fd5b81518015158114611c9657600080fd5b9392505050565b600060208284031215611caf57600080fd5b8151611c9681611ba1565b60008219821115611ccd57611ccd611bff565b500190565b600082611d08577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d4557611d45611bff565b50029056fea164736f6c634300080f000a" func init() { if err := json.Unmarshal([]byte(L2OutputOracleStorageLayoutJSON), L2OutputOracleStorageLayout); err != nil { diff --git a/kroma-bindings/bindings/validatormanager.go b/kroma-bindings/bindings/validatormanager.go index c7dd51327..bbfda383b 100644 --- a/kroma-bindings/bindings/validatormanager.go +++ b/kroma-bindings/bindings/validatormanager.go @@ -47,7 +47,7 @@ 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\":\"assertCanSubmitOutput\",\"inputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"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\":\"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\":\"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: "0x6101e06040523480156200001257600080fd5b50604051620051b9380380620051b9833981016040819052620000359162000171565b8061014001516001600160801b03168161012001516001600160801b031611156200007357604051631510b77f60e01b815260040160405180910390fd5b80516001600160a01b0390811660809081526020830151821660a0908152604084015190921660c0908152610120808501516001600160801b0390811660e09081526101408088015183166101009081526060890151841690945294870151821690945293850151841661016052908401518316610180529083015182166101a05290910151166101c05262000264565b60405161016081016001600160401b03811182821017156200013657634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200015457600080fd5b919050565b80516001600160801b03811681146200015457600080fd5b600061016082840312156200018557600080fd5b6200018f62000104565b6200019a836200013c565b8152620001aa602084016200013c565b6020820152620001bd604084016200013c565b6040820152620001d06060840162000159565b6060820152620001e36080840162000159565b6080820152620001f660a0840162000159565b60a08201526200020960c0840162000159565b60c08201526200021c60e0840162000159565b60e08201526101006200023181850162000159565b908201526101206200024584820162000159565b908201526101406200025984820162000159565b908201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c051614db662000403600039600081816102e00152818161424d0152818161428f015261457c0152600081816107280152612af701526000818161035e015261304401526000818161050301526133870152600081816103850152610cf601526000818161069e0152610f820152600081816105ef01528181610ab301526115840152600081816102b90152818161099e01526112ef0152600081816103370152610d5301526000818161045501528181610892015281816109d201528181610ae701528181610b8c01528181610e70015281816114cb015281816115ec01528181611b3101528181611d4201528181612d0e01528181612e4a01526144f701526000818161022f01528181610c5d015281816111c8015281816116eb015281816118de0152818161197001528181611a1c01528181611c12015281816128e101528181612972015281816129f601528181612b7c01528181612c2301528181612f820152818161314301526132000152614db66000f3fe608060405234801561001057600080fd5b50600436106102255760003560e01c8063891aab741161012a578063b91b2723116100bd578063cdff5e191161008c578063dff221b511610071578063dff221b5146106c0578063e0cc26a2146106f1578063e7816b7f1461072357600080fd5b8063cdff5e191461067c578063dea152541461069957600080fd5b8063b91b2723146102ac578063b9551f8214610611578063be11934714610656578063be995dc21461066957600080fd5b8063abeba449116100f9578063abeba449146104fe578063ac6c525114610525578063af6ca7621461059a578063b2653fe3146105ea57600080fd5b8063891aab741461048a5780638ee4b6021461049d578063970531c1146104b05780639d6b2e37146104eb57600080fd5b80633a549046116101bd57806354fd4d501161018c5780635bab847f116101715780635bab847f1461043d5780636874e0421461045057806388576dc91461047757600080fd5b806354fd4d50146103a757806356b65e97146103f057600080fd5b80633a5490461461032a5780633ee4d4a31461033257806342223ae9146103595780634cca5e6c1461038057600080fd5b80631796e52e116101f95780631796e52e146102b457806322009af6146102db578063263a34021461030257806330ccebb51461030a57600080fd5b80621c2ff61461022a578063020810c31461026e5780630763fa7e14610283578063110d6069146102ac575b600080fd5b6102517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61028161027c3660046148aa565b61074a565b005b61028b602881565b6040516fffffffffffffffffffffffffffffffff9091168152602001610265565b61028b606481565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6102816107d6565b61031d6103183660046148aa565b61093e565b60405161026591906148f6565b610251610c47565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6103e36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102659190614937565b61042d6103fe3660046148aa565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff16151590565b6040519015158152602001610265565b61028161044b3660046149b8565b610d75565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b610281610485366004614a07565b610eea565b6102816104983660046148aa565b6111bd565b6102816104ab366004614a40565b61129a565b61028b6104be3660046148aa565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff1690565b6102816104f93660046149b8565b611682565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61057a6105333660046148aa565b6001600160a01b031660009081526003602090815260408083205463ffffffff168352600290915290206001015461010090046effffffffffffffffffffffffffffff1690565b6040516effffffffffffffffffffffffffffff9091168152602001610265565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff1661057a565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61064461061f3660046148aa565b6001600160a01b03166000908152600460205260409020546301000000900460ff1690565b60405160ff9091168152602001610265565b610281610664366004614a85565b6118d3565b610281610677366004614a9e565b611a1a565b610684611e15565b60405163ffffffff9091168152602001610265565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6106446106ce3660046148aa565b6001600160a01b0316600090815260046020526040902054610100900460ff1690565b6106446106ff3660046148aa565b6001600160a01b031660009081526004602052604090205462010000900460ff1690565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b60056107558261093e565b6005811115610766576107666148c7565b14158061079c57506001600160a01b0381166000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b156107d3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60036107e13361093e565b60058111156107f2576107f26148c7565b14158061081f5750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610856576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081523360048201819052610907916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638abf0af0906024015b602060405180830381865afa1580156108da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fe9190614ae0565b60019190611e3a565b60405142815233907ff33a24861b76047debce215c7ae4915a9befc5d870e97efbd4152df23c72112a9060200160405180910390a2565b6001600160a01b03811660009081526004602052604081205460ff1661096657506000919050565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f00000000000000000000000000000000000000000000000000000000000000009091169063981cee5390602401602060405180830381865afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190614ae0565b6fffffffffffffffffffffffffffffffff161015610a5f57506001919050565b6001600160a01b03828116600081815260036020526040908190205490517f12188543000000000000000000000000000000000000000000000000000000008152600481019290925263ffffffff161515917f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f000000000000000000000000000000000000000000000000000000000000000090911690631218854390602401602060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b549190614ae0565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190614ae0565b610c019190614b2c565b6fffffffffffffffffffffffffffffffff161015610c305780610c275750600292915050565b50600492915050565b80610c3e5750600392915050565b50600592915050565b600080546001600160a01b031615610d505760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd9190614b5d565b9050804210610d3f576000610cf28242614b76565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16811115610d3d576001600160a01b039250505090565b505b50506000546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610d808361093e565b9050818015610dbb57506001816005811115610d9e57610d9e6148c7565b1480610dbb57506004816005811115610db957610db96148c7565b145b15610e1957610dcb6001846123bf565b15610e1457826001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051610e0b91815260200190565b60405180910390a25b505050565b6004816005811115610e2d57610e2d6148c7565b10610e14576040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038085166004830152610ee49185917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edb9190614ae0565b60019190612562565b50505050565b6002610ef53361093e565b6005811115610f0657610f066148c7565b1080610f325750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610f69576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260046020526040902080544290610fc1907f00000000000000000000000000000000000000000000000000000000000000009064010000000090046fffffffffffffffffffffffffffffffff16614b8d565b6fffffffffffffffffffffffffffffffff16111561100b576040517f7d7a4d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115611049576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460ff620100009091048116908316819003611092576040517f150393f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160ff168460ff16116110b0576110ab8483614bc1565b6110ba565b6110ba8285614bc1565b835490915060ff630100000090910481169082161115611106576040517f9ed4fa4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffff00000000000000000000000000000000ff00ffff166201000060ff8681169182027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1692909217640100000000426fffffffffffffffffffffffffffffffff1602178555604080519285168352602083019190915233917fc0b29b9b824f7a62d93fde5832bb8307fd62594d0a08d96d533407a0a147ec48910160405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461121f576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611229610c47565b90506001600160a01b03808216148015906112565750806001600160a01b0316826001600160a01b031614155b1561128d576040517fc625317600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112968261074a565b5050565b60006112a53361093e565b60058111156112b6576112b66148c7565b146112ed576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16101561136b576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff831611156113a9576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff821611156113e7576040517f4143808b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526004602081905260409182902080546fffffffffffffffffffffffffffffffff4216640100000000027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff60ff888116630100000002919091167fffffffffffffffffffffffff0000000000000000000000000000000000ffffff918a1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0090941693909317600117169190911717815591517fd7f1a3d800000000000000000000000000000000000000000000000000000000815291927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263d7f1a3d89261152d92918991016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b6020604051808303816000875af115801561154c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115709190614ae0565b506fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169085161080159061161b576040517f8abf0af0000000000000000000000000000000000000000000000000000000008152336004820181905261161b916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638abf0af0906024016108bd565b60408051821515815260ff86811660208301528516818301526fffffffffffffffffffffffffffffffff87166060820152905133917f04ba0c4d7cbac9138f7b73ec9fef796e4ad320bf5fb204f080f81fd59c2d48b9919081900360800190a25050505050565b6001600160a01b0382166000908152600560205260409020546fffffffffffffffffffffffffffffffff166116e3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156117ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176b9190614be4565b6001600160a01b0316336001600160a01b0316146117b5576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186b565b336001600160a01b038316146117fc576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260056020526040902054426fffffffffffffffffffffffffffffffff9091161115611862576040517f1dfc20f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186b82612877565b6001600160a01b03821660008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a25050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611935576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193d6128dc565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa1580156119bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e39190614be4565b6000549091506001600160a01b0390811690821603611a0a57611a0581612877565b611a12565b611a12613018565b6112966130ee565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9c9190614be4565b6001600160a01b0316336001600160a01b031614611ae6576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052600160448401529182917f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9d9190614c01565b91509150611bac836001610d75565b6001600160a01b038316857f1237821480ce4d75f917bc39d1641eb17a5e09a2d5bf982cdd8cb2561aa28e68611be28486614b8d565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390a3611c0f8361336f565b847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633f98365b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614b5d565b1015611ceb57600085815260066020526040902080546fffffffffffffffffffffffffffffffff8082168401167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055611e0e565b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dae9190614c01565b5050611dbb846000610d75565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b0385169086907fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa149060200160405180910390a35b5050505050565b600154600090611e359063ffffffff640100000000820481169116614c30565b905090565b60006040518060e00160405280846001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600115158152602001836effffffffffffffffffffffffffffff168152602001836effffffffffffffffffffffffffffff16815250905083600001600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff1602179055505060008460000160009054906101000a900463ffffffff169050818560010160008363ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548160ff02191690831515021790555060a08201518160010160016101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555060c08201518160010160106101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555090505080856002016000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055508460000160089054906101000a900463ffffffff1663ffffffff1660000361211557845463ffffffff90911668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff90911617909355505050565b845468010000000000000000900463ffffffff165b63ffffffff808216600090815260018089016020526040822090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168b01909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905580549092600160c01b9091041690036122515763ffffffff838116600081815260018a016020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000938616939093029290921790915581547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b909102178155612248878461343f565b50505050505050565b8054600160e01b900463ffffffff166000036123275763ffffffff838116600081815260018a8101602052604090912080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000948716949094029390931783559190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b909102178155612248878461343f565b805463ffffffff600160e01b8204811660009081526001808b016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff700100000000000000000000000000000000928390048116929091041611156123a7578054600160e01b900463ffffffff1691506123b9565b8054600160c01b900463ffffffff1691505b5061212a565b6001600160a01b038116600090815260028301602052604081205463ffffffff168082036123f157600091505061255c565b6001600160a01b03831660009081526002850160209081526040808320805463ffffffff1916905563ffffffff8481168452600180890190935292208054910154740100000000000000000000000000000000000000009091049091169061010090046effffffffffffffffffffffffffffff165b63ffffffff8216156125085763ffffffff91821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612466565b612512868461364b565b50508354600163ffffffff64010000000080840482168301909116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9092169190911785559150505b92915050565b6001600160a01b038216600090815260028401602052604081205463ffffffff16808203612594576000915050612870565b63ffffffff80821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff8781166101008181027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff85161790945593549290910416927401000000000000000000000000000000000000000090910416908210156127445763ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116848803700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff908116820116909202179091555b63ffffffff8216156127345763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168601909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612693565b5061273f878461343f565b612868565b63ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116878503700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff90811682900316909202179091555b63ffffffff82161561285d5763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905554740100000000000000000000000000000000000000009004909116906127bb565b506128688784613dd7565b600193505050505b9392505050565b6001600160a01b038116600090815260046020526040902054610100900460ff16156107d3576001600160a01b0316600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633f98365b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129619190614b5d565b61296c906001614c4d565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f29190614b5d565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a769190614be4565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b8152600401612aa391815260200190565b602060405180830381865afa158015612ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae49190614c65565b612af15760009250505090565b6000805b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16108015612b485750828411155b15612f60576040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bef9190614c65565b15612f60576040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015612c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c969190614be4565b90506000806000612ca684614202565b6040517fad4294510000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526fffffffffffffffffffffffffffffffff858116602484015284811660448401528316606483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063ad42945190608401600060405180830381600087803b158015612d5457600080fd5b505af1158015612d68573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8581168252878116602083015286168183015290516001600160a01b03881693507f36f11936e926f4c5f13247a0f85bfd1361293f182bc6a64bfff082b39aec64d992509081900360600190a26000878152600660205260409020546fffffffffffffffffffffffffffffffff168015612f40576040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015612e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb69190614c01565b505060008881526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905590516fffffffffffffffffffffffffffffffff831681526001600160a01b038716918a917fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa14910160405180910390a35b612f4b856000610d75565b87600101975085600101955050505050612af5565b6fffffffffffffffffffffffffffffffff82161561300d576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663b4c302ff612fb2600187614b76565b6040518263ffffffff1660e01b8152600401612fd091815260200190565b600060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b50505050600194505050505090565b600094505050505090565b6000546001600160a01b03161561309857600080546001600160a01b03168152600460205260409020547f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1661010090910460ff161061309a57600054613098906001600160a01b031661336f565b565b600080546001600160a01b03168152600460205260409020805460ff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff1680156133445760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633f98365b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561319f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c39190614b5d565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa158015613247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326b9190614c82565b905060008382602001514341446001436132859190614b76565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6132f69190614d54565b90506133036001826142eb565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055506107d3915050565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b60006133ad6fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614c4d565b6001600160a01b03831660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8616908117909155915191825292935090917f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a25050565b63ffffffff80821660009081526001840160205260408082208054740100000000000000000000000000000000000000009004909316825290205b815474010000000000000000000000000000000000000000900463ffffffff16158015906134cd5750600180820154908301546effffffffffffffffffffffffffffff6101009283900481169290910416115b15610ee457815481547fffffffffffffffffffffffff00000000000000000000000000000000000000008083166001600160a01b03928316178555835416918116919091178255600180840180548483018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117875584549584900483169384029516949094179092558354929003700100000000000000000000000000000000808404831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790558354821660009081526002870160209081526040808320805463ffffffff998a1663ffffffff19918216179091558754965490951683528083208054909516740100000000000000000000000000000000000000009687900489161790945594548490048616808252918701909452818420805493909304909416835290912061347a565b63ffffffff8082166000908152600184016020526040812080549092600160c01b90910416900361392e578054600160e01b900463ffffffff166000036137dd57805474010000000000000000000000000000000000000000900463ffffffff166000036136de5782547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff168355613799565b600181015460ff161561374657805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff169055613799565b805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555b5063ffffffff1660009081526001918201602052604081209081550180547fff00000000000000000000000000000000000000000000000000000000000000169055565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613dd1565b8054600160e01b900463ffffffff16600003613a9557805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613dd1565b805463ffffffff600160e01b82048116600090815260018087016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff61010092839004811692909104161115613c6357805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff821681178355600160e01b9096048c168a52868a20909801549254700100000000000000000000000000000000908190048316938190048316939093019091169091027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951791909117909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613dd1565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559354600160c01b9096048c168a52868a2090980154700100000000000000000000000000000000908190048316958190048316959095019091169093027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091167fff000000000000000000000000000000000000000000000000000000000000ff90961695909517949094179055915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116905b5061364b565b5b63ffffffff8082166000908152600180850160205260408083208054600160e01b810486168552828520840154600160c01b90910490951684529220015490916effffffffffffffffffffffffffffff61010091829004811691909204909116111561402057600180820154825463ffffffff600160c01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610e1457805463ffffffff600160c01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613dd8565b600180820154825463ffffffff600160e01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610e1457805463ffffffff600160e01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613dd8565b6001600160a01b0381166000908152600460205260408120548190819062010000900460ff1681614232866144ba565b90506000806142776fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008501168560646145f0565b90506142ba6fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166064868103906145f0565b91506142dd6fffffffffffffffffffffffffffffffff84166064868103906145f0565b919891975095509350505050565b815460009068010000000000000000900463ffffffff165b63ffffffff80821660009081526001808701602052604080832054600160c01b9004909316825291902001546effffffffffffffffffffffffffffff8085167001000000000000000000000000000000009092041611156143845763ffffffff9081166000908152600185016020526040902054600160c01b900416614303565b63ffffffff8181166000818152600187810160205260408083208054600160c01b9004909516835282208101549290915291909101547001000000000000000000000000000000009091046effffffffffffffffffffffffffffff9081169094039384811661010090920416111561441d5763ffffffff1660009081526001840160205260409020546001600160a01b0316905061255c565b63ffffffff818116600090815260018681016020526040808320808301549054600160e01b9004909416835290912001546101009091046effffffffffffffffffffffffffffff908116909403938481167001000000000000000000000000000000009092041611156144b05763ffffffff9081166000908152600185016020526040902054600160e01b900416614303565b600091505061255c565b6040517f913f1a9f0000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063913f1a9f90602401602060405180830381865afa15801561453e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145629190614ae0565b905060006145a56fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602860646145f0565b90506145e8816fffffffffffffffffffffffffffffffff16650100000000006145e1856fffffffffffffffffffffffffffffffff1660646146a4565b919061476b565b949350505050565b6000838302608081901c6fffffffffffffffffffffffffffffffff841611614679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f770000000060448201526064015b60405180910390fd5b826fffffffffffffffffffffffffffffffff16818161469a5761469a614d25565b0495945050505050565b60008083831080156146bd57600181146146d0576146df565b65010000000000850284900491506146df565b65010000000000840285900491505b506402ef6c3406818002602890811c808402821c808202831c808302841c808402851c938402851c95909502841c641da06a6e33909502841c6455232d2bb2909202841c640d4ca0c283909302841c643177d95571909102841c64fffe4bcada90960290931c949094019190910103919091030390508183111561255c576501921fb544430392915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036147c3578382816147b9576147b9614d25565b0492505050612870565b80841161482c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401614670565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03811681146107d357600080fd5b6000602082840312156148bc57600080fd5b813561287081614895565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614931577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b8181101561496457858101830151858201604001528201614948565b81811115614976576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b80151581146107d357600080fd5b600080604083850312156149cb57600080fd5b82356149d681614895565b915060208301356149e6816149aa565b809150509250929050565b803560ff81168114614a0257600080fd5b919050565b600060208284031215614a1957600080fd5b612870826149f1565b6fffffffffffffffffffffffffffffffff811681146107d357600080fd5b600080600060608486031215614a5557600080fd5b8335614a6081614a22565b9250614a6e602085016149f1565b9150614a7c604085016149f1565b90509250925092565b600060208284031215614a9757600080fd5b5035919050565b600080600060608486031215614ab357600080fd5b833592506020840135614ac581614895565b91506040840135614ad581614895565b809150509250925092565b600060208284031215614af257600080fd5b815161287081614a22565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006fffffffffffffffffffffffffffffffff83811690831681811015614b5557614b55614afd565b039392505050565b600060208284031215614b6f57600080fd5b5051919050565b600082821015614b8857614b88614afd565b500390565b60006fffffffffffffffffffffffffffffffff808316818516808303821115614bb857614bb8614afd565b01949350505050565b600060ff821660ff841680821015614bdb57614bdb614afd565b90039392505050565b600060208284031215614bf657600080fd5b815161287081614895565b60008060408385031215614c1457600080fd5b8251614c1f81614a22565b60208401519092506149e681614a22565b600063ffffffff83811690831681811015614b5557614b55614afd565b60008219821115614c6057614c60614afd565b500190565b600060208284031215614c7757600080fd5b8151612870816149aa565b600060808284031215614c9457600080fd5b6040516080810181811067ffffffffffffffff82111715614cde577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251614cec81614895565b8152602083810151908201526040830151614d0681614a22565b60408201526060830151614d1981614a22565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006effffffffffffffffffffffffffffff80841680614d9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b9216919091069291505056fea164736f6c634300080f000a", + Bin: "0x6101e06040523480156200001257600080fd5b50604051620051cf380380620051cf833981016040819052620000359162000171565b8061014001516001600160801b03168161012001516001600160801b031611156200007357604051631510b77f60e01b815260040160405180910390fd5b80516001600160a01b0390811660809081526020830151821660a0908152604084015190921660c0908152610120808501516001600160801b0390811660e09081526101408088015183166101009081526060890151841690945294870151821690945293850151841661016052908401518316610180529083015182166101a05290910151166101c05262000264565b60405161016081016001600160401b03811182821017156200013657634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200015457600080fd5b919050565b80516001600160801b03811681146200015457600080fd5b600061016082840312156200018557600080fd5b6200018f62000104565b6200019a836200013c565b8152620001aa602084016200013c565b6020820152620001bd604084016200013c565b6040820152620001d06060840162000159565b6060820152620001e36080840162000159565b6080820152620001f660a0840162000159565b60a08201526200020960c0840162000159565b60c08201526200021c60e0840162000159565b60e08201526101006200023181850162000159565b908201526101206200024584820162000159565b908201526101406200025984820162000159565b908201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c051614dcc62000403600039600081816102e001528181614263015281816142a501526145920152600081816107280152612aeb01526000818161035e0152613041015260008181610503015261339d0152600081816103850152610cf601526000818161069e0152610f820152600081816105ef01528181610ab301526115840152600081816102b90152818161099e01526112ef0152600081816103370152610d5301526000818161045501528181610892015281816109d201528181610ae701528181610b8c01528181610e70015281816114cb015281816115ec01528181611b3101528181611d4101528181612d0201528181612e3e015261450d01526000818161022f01528181610c5d015281816111c8015281816116eb015281816118de0152818161197001528181611a1c01528181611c12015281816128e001528181612966015281816129ea01528181612b7001528181612c1701528181612f9b0152818161313e01526131f20152614dcc6000f3fe608060405234801561001057600080fd5b50600436106102255760003560e01c8063891aab741161012a578063b91b2723116100bd578063cdff5e191161008c578063dff221b511610071578063dff221b5146106c0578063e0cc26a2146106f1578063e7816b7f1461072357600080fd5b8063cdff5e191461067c578063dea152541461069957600080fd5b8063b91b2723146102ac578063b9551f8214610611578063be11934714610656578063be995dc21461066957600080fd5b8063abeba449116100f9578063abeba449146104fe578063ac6c525114610525578063af6ca7621461059a578063b2653fe3146105ea57600080fd5b8063891aab741461048a5780638ee4b6021461049d578063970531c1146104b05780639d6b2e37146104eb57600080fd5b80633a549046116101bd57806354fd4d501161018c5780635bab847f116101715780635bab847f1461043d5780636874e0421461045057806388576dc91461047757600080fd5b806354fd4d50146103a757806356b65e97146103f057600080fd5b80633a5490461461032a5780633ee4d4a31461033257806342223ae9146103595780634cca5e6c1461038057600080fd5b80631796e52e116101f95780631796e52e146102b457806322009af6146102db578063263a34021461030257806330ccebb51461030a57600080fd5b80621c2ff61461022a578063020810c31461026e5780630763fa7e14610283578063110d6069146102ac575b600080fd5b6102517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61028161027c3660046148c0565b61074a565b005b61028b602881565b6040516fffffffffffffffffffffffffffffffff9091168152602001610265565b61028b606481565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6102816107d6565b61031d6103183660046148c0565b61093e565b604051610265919061490c565b610251610c47565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6103e36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610265919061494d565b61042d6103fe3660046148c0565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff16151590565b6040519015158152602001610265565b61028161044b3660046149ce565b610d75565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b610281610485366004614a1d565b610eea565b6102816104983660046148c0565b6111bd565b6102816104ab366004614a56565b61129a565b61028b6104be3660046148c0565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff1690565b6102816104f93660046149ce565b611682565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61057a6105333660046148c0565b6001600160a01b031660009081526003602090815260408083205463ffffffff168352600290915290206001015461010090046effffffffffffffffffffffffffffff1690565b6040516effffffffffffffffffffffffffffff9091168152602001610265565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff1661057a565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61064461061f3660046148c0565b6001600160a01b03166000908152600460205260409020546301000000900460ff1690565b60405160ff9091168152602001610265565b610281610664366004614a9b565b6118d3565b610281610677366004614ab4565b611a1a565b610684611e14565b60405163ffffffff9091168152602001610265565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6106446106ce3660046148c0565b6001600160a01b0316600090815260046020526040902054610100900460ff1690565b6106446106ff3660046148c0565b6001600160a01b031660009081526004602052604090205462010000900460ff1690565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b60056107558261093e565b6005811115610766576107666148dd565b14158061079c57506001600160a01b0381166000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b156107d3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60036107e13361093e565b60058111156107f2576107f26148dd565b14158061081f5750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610856576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081523360048201819052610907916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638abf0af0906024015b602060405180830381865afa1580156108da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fe9190614af6565b60019190611e39565b60405142815233907ff33a24861b76047debce215c7ae4915a9befc5d870e97efbd4152df23c72112a9060200160405180910390a2565b6001600160a01b03811660009081526004602052604081205460ff1661096657506000919050565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f00000000000000000000000000000000000000000000000000000000000000009091169063981cee5390602401602060405180830381865afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190614af6565b6fffffffffffffffffffffffffffffffff161015610a5f57506001919050565b6001600160a01b03828116600081815260036020526040908190205490517f12188543000000000000000000000000000000000000000000000000000000008152600481019290925263ffffffff161515917f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f000000000000000000000000000000000000000000000000000000000000000090911690631218854390602401602060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b549190614af6565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190614af6565b610c019190614b42565b6fffffffffffffffffffffffffffffffff161015610c305780610c275750600292915050565b50600492915050565b80610c3e5750600392915050565b50600592915050565b600080546001600160a01b031615610d505760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd9190614b73565b9050804210610d3f576000610cf28242614b8c565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16811115610d3d576001600160a01b039250505090565b505b50506000546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610d808361093e565b9050818015610dbb57506001816005811115610d9e57610d9e6148dd565b1480610dbb57506004816005811115610db957610db96148dd565b145b15610e1957610dcb6001846123be565b15610e1457826001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051610e0b91815260200190565b60405180910390a25b505050565b6004816005811115610e2d57610e2d6148dd565b10610e14576040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038085166004830152610ee49185917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edb9190614af6565b60019190612561565b50505050565b6002610ef53361093e565b6005811115610f0657610f066148dd565b1080610f325750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610f69576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260046020526040902080544290610fc1907f00000000000000000000000000000000000000000000000000000000000000009064010000000090046fffffffffffffffffffffffffffffffff16614ba3565b6fffffffffffffffffffffffffffffffff16111561100b576040517f7d7a4d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115611049576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460ff620100009091048116908316819003611092576040517f150393f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160ff168460ff16116110b0576110ab8483614bd7565b6110ba565b6110ba8285614bd7565b835490915060ff630100000090910481169082161115611106576040517f9ed4fa4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffff00000000000000000000000000000000ff00ffff166201000060ff8681169182027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1692909217640100000000426fffffffffffffffffffffffffffffffff1602178555604080519285168352602083019190915233917fc0b29b9b824f7a62d93fde5832bb8307fd62594d0a08d96d533407a0a147ec48910160405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461121f576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611229610c47565b90506001600160a01b03808216148015906112565750806001600160a01b0316826001600160a01b031614155b1561128d576040517fc625317600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112968261074a565b5050565b60006112a53361093e565b60058111156112b6576112b66148dd565b146112ed576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16101561136b576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff831611156113a9576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff821611156113e7576040517f4143808b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526004602081905260409182902080546fffffffffffffffffffffffffffffffff4216640100000000027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff60ff888116630100000002919091167fffffffffffffffffffffffff0000000000000000000000000000000000ffffff918a1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0090941693909317600117169190911717815591517fd7f1a3d800000000000000000000000000000000000000000000000000000000815291927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263d7f1a3d89261152d92918991016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b6020604051808303816000875af115801561154c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115709190614af6565b506fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169085161080159061161b576040517f8abf0af0000000000000000000000000000000000000000000000000000000008152336004820181905261161b916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638abf0af0906024016108bd565b60408051821515815260ff86811660208301528516818301526fffffffffffffffffffffffffffffffff87166060820152905133917f04ba0c4d7cbac9138f7b73ec9fef796e4ad320bf5fb204f080f81fd59c2d48b9919081900360800190a25050505050565b6001600160a01b0382166000908152600560205260409020546fffffffffffffffffffffffffffffffff166116e3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156117ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176b9190614bfa565b6001600160a01b0316336001600160a01b0316146117b5576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186b565b336001600160a01b038316146117fc576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260056020526040902054426fffffffffffffffffffffffffffffffff9091161115611862576040517f1dfc20f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186b82612876565b6001600160a01b03821660008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a25050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611935576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193d6128db565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa1580156119bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e39190614bfa565b6000549091506001600160a01b0390811690821603611a0a57611a0581612876565b611a12565b611a12613015565b6112966130eb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9c9190614bfa565b6001600160a01b0316336001600160a01b031614611ae6576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052600160448401529182917f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9d9190614c17565b91509150611bac836001610d75565b6001600160a01b038316857f1237821480ce4d75f917bc39d1641eb17a5e09a2d5bf982cdd8cb2561aa28e68611be28486614ba3565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390a3611c0f83613385565b847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614b73565b11611cea57600085815260066020526040902080546fffffffffffffffffffffffffffffffff8082168401167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055611e0d565b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dad9190614c17565b5050611dba846000610d75565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b0385169086907fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa149060200160405180910390a35b5050505050565b600154600090611e349063ffffffff640100000000820481169116614c46565b905090565b60006040518060e00160405280846001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600115158152602001836effffffffffffffffffffffffffffff168152602001836effffffffffffffffffffffffffffff16815250905083600001600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff1602179055505060008460000160009054906101000a900463ffffffff169050818560010160008363ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548160ff02191690831515021790555060a08201518160010160016101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555060c08201518160010160106101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555090505080856002016000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055508460000160089054906101000a900463ffffffff1663ffffffff1660000361211457845463ffffffff90911668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff90911617909355505050565b845468010000000000000000900463ffffffff165b63ffffffff808216600090815260018089016020526040822090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168b01909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905580549092600160c01b9091041690036122505763ffffffff838116600081815260018a016020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000938616939093029290921790915581547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b9091021781556122478784613455565b50505050505050565b8054600160e01b900463ffffffff166000036123265763ffffffff838116600081815260018a8101602052604090912080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000948716949094029390931783559190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b9091021781556122478784613455565b805463ffffffff600160e01b8204811660009081526001808b016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff700100000000000000000000000000000000928390048116929091041611156123a6578054600160e01b900463ffffffff1691506123b8565b8054600160c01b900463ffffffff1691505b50612129565b6001600160a01b038116600090815260028301602052604081205463ffffffff168082036123f057600091505061255b565b6001600160a01b03831660009081526002850160209081526040808320805463ffffffff1916905563ffffffff8481168452600180890190935292208054910154740100000000000000000000000000000000000000009091049091169061010090046effffffffffffffffffffffffffffff165b63ffffffff8216156125075763ffffffff91821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612465565b6125118684613661565b50508354600163ffffffff64010000000080840482168301909116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9092169190911785559150505b92915050565b6001600160a01b038216600090815260028401602052604081205463ffffffff1680820361259357600091505061286f565b63ffffffff80821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff8781166101008181027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff85161790945593549290910416927401000000000000000000000000000000000000000090910416908210156127435763ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116848803700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff908116820116909202179091555b63ffffffff8216156127335763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168601909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612692565b5061273e8784613455565b612867565b63ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116878503700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff90811682900316909202179091555b63ffffffff82161561285c5763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905554740100000000000000000000000000000000000000009004909116906127ba565b506128678784613ded565b600193505050505b9392505050565b6001600160a01b038116600090815260046020526040902054610100900460ff16156107d3576001600160a01b0316600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129609190614b73565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e69190614b73565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a9190614bfa565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b8152600401612a9791815260200190565b602060405180830381865afa158015612ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad89190614c63565b612ae55760009250505090565b6000805b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16108015612b3c5750828411155b15612f54576040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be39190614c63565b15612f54576040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015612c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8a9190614bfa565b90506000806000612c9a84614218565b6040517fad4294510000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526fffffffffffffffffffffffffffffffff858116602484015284811660448401528316606483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063ad42945190608401600060405180830381600087803b158015612d4857600080fd5b505af1158015612d5c573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8581168252878116602083015286168183015290516001600160a01b03881693507f36f11936e926f4c5f13247a0f85bfd1361293f182bc6a64bfff082b39aec64d992509081900360600190a26000878152600660205260409020546fffffffffffffffffffffffffffffffff168015612f34576040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015612e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eaa9190614c17565b505060008881526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905590516fffffffffffffffffffffffffffffffff831681526001600160a01b038716918a917fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa14910160405180910390a35b612f3f856000610d75565b87600101975085600101955050505050612ae9565b6fffffffffffffffffffffffffffffffff82161561300a576040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639902cdc090602401600060405180830381600087803b158015612fe757600080fd5b505af1158015612ffb573d6000803e3d6000fd5b50505050600194505050505090565b600094505050505090565b6000546001600160a01b03161561309557600080546001600160a01b03168152600460205260409020547f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1661010090910460ff161061309757600054613095906001600160a01b0316613385565b565b600080546001600160a01b03168152600460205260409020805460ff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055565b6001805468010000000000000000900463ffffffff1660009081526002602052604081209091015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561319a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131be9190614b73565b90506000826effffffffffffffffffffffffffffff161180156131e15750600081115b156133595760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae557613222600185614b8c565b6040518263ffffffff1660e01b815260040161324091815260200190565b608060405180830381865afa15801561325d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132819190614c80565b9050600083826020015143414460014361329b9190614b8c565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c61330c9190614d52565b9050613319600182614301565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055506112969050565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b60006133c36fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614da7565b6001600160a01b03831660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8616908117909155915191825292935090917f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a25050565b63ffffffff80821660009081526001840160205260408082208054740100000000000000000000000000000000000000009004909316825290205b815474010000000000000000000000000000000000000000900463ffffffff16158015906134e35750600180820154908301546effffffffffffffffffffffffffffff6101009283900481169290910416115b15610ee457815481547fffffffffffffffffffffffff00000000000000000000000000000000000000008083166001600160a01b03928316178555835416918116919091178255600180840180548483018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117875584549584900483169384029516949094179092558354929003700100000000000000000000000000000000808404831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790558354821660009081526002870160209081526040808320805463ffffffff998a1663ffffffff199182161790915587549654909516835280832080549095167401000000000000000000000000000000000000000096879004891617909455945484900486168082529187019094528184208054939093049094168352909120613490565b63ffffffff8082166000908152600184016020526040812080549092600160c01b909104169003613944578054600160e01b900463ffffffff166000036137f357805474010000000000000000000000000000000000000000900463ffffffff166000036136f45782547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1683556137af565b600181015460ff161561375c57805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1690556137af565b805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555b5063ffffffff1660009081526001918201602052604081209081550180547fff00000000000000000000000000000000000000000000000000000000000000169055565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613de7565b8054600160e01b900463ffffffff16600003613aab57805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613de7565b805463ffffffff600160e01b82048116600090815260018087016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff61010092839004811692909104161115613c7957805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff821681178355600160e01b9096048c168a52868a20909801549254700100000000000000000000000000000000908190048316938190048316939093019091169091027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951791909117909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613de7565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559354600160c01b9096048c168a52868a2090980154700100000000000000000000000000000000908190048316958190048316959095019091169093027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091167fff000000000000000000000000000000000000000000000000000000000000ff90961695909517949094179055915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116905b50613661565b5b63ffffffff8082166000908152600180850160205260408083208054600160e01b810486168552828520840154600160c01b90910490951684529220015490916effffffffffffffffffffffffffffff61010091829004811691909204909116111561403657600180820154825463ffffffff600160c01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610e1457805463ffffffff600160c01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613dee565b600180820154825463ffffffff600160e01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610e1457805463ffffffff600160e01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613dee565b6001600160a01b0381166000908152600460205260408120548190819062010000900460ff1681614248866144d0565b905060008061428d6fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000850116856064614606565b90506142d06fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016606486810390614606565b91506142f36fffffffffffffffffffffffffffffffff8416606486810390614606565b919891975095509350505050565b815460009068010000000000000000900463ffffffff165b63ffffffff80821660009081526001808701602052604080832054600160c01b9004909316825291902001546effffffffffffffffffffffffffffff80851670010000000000000000000000000000000090920416111561439a5763ffffffff9081166000908152600185016020526040902054600160c01b900416614319565b63ffffffff8181166000818152600187810160205260408083208054600160c01b9004909516835282208101549290915291909101547001000000000000000000000000000000009091046effffffffffffffffffffffffffffff908116909403938481166101009092041611156144335763ffffffff1660009081526001840160205260409020546001600160a01b0316905061255b565b63ffffffff818116600090815260018681016020526040808320808301549054600160e01b9004909416835290912001546101009091046effffffffffffffffffffffffffffff908116909403938481167001000000000000000000000000000000009092041611156144c65763ffffffff9081166000908152600185016020526040902054600160e01b900416614319565b600091505061255b565b6040517f913f1a9f0000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063913f1a9f90602401602060405180830381865afa158015614554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145789190614af6565b905060006145bb6fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660286064614606565b90506145fe816fffffffffffffffffffffffffffffffff16650100000000006145f7856fffffffffffffffffffffffffffffffff1660646146ba565b9190614781565b949350505050565b6000838302608081901c6fffffffffffffffffffffffffffffffff84161161468f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f770000000060448201526064015b60405180910390fd5b826fffffffffffffffffffffffffffffffff1681816146b0576146b0614d23565b0495945050505050565b60008083831080156146d357600181146146e6576146f5565b65010000000000850284900491506146f5565b65010000000000840285900491505b506402ef6c3406818002602890811c808402821c808202831c808302841c808402851c938402851c95909502841c641da06a6e33909502841c6455232d2bb2909202841c640d4ca0c283909302841c643177d95571909102841c64fffe4bcada90960290931c949094019190910103919091030390508183111561255b576501921fb544430392915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036147d9578382816147cf576147cf614d23565b049250505061286f565b808411614842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401614686565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03811681146107d357600080fd5b6000602082840312156148d257600080fd5b813561286f816148ab565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614947577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b8181101561497a5785810183015185820160400152820161495e565b8181111561498c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b80151581146107d357600080fd5b600080604083850312156149e157600080fd5b82356149ec816148ab565b915060208301356149fc816149c0565b809150509250929050565b803560ff81168114614a1857600080fd5b919050565b600060208284031215614a2f57600080fd5b61286f82614a07565b6fffffffffffffffffffffffffffffffff811681146107d357600080fd5b600080600060608486031215614a6b57600080fd5b8335614a7681614a38565b9250614a8460208501614a07565b9150614a9260408501614a07565b90509250925092565b600060208284031215614aad57600080fd5b5035919050565b600080600060608486031215614ac957600080fd5b833592506020840135614adb816148ab565b91506040840135614aeb816148ab565b809150509250925092565b600060208284031215614b0857600080fd5b815161286f81614a38565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006fffffffffffffffffffffffffffffffff83811690831681811015614b6b57614b6b614b13565b039392505050565b600060208284031215614b8557600080fd5b5051919050565b600082821015614b9e57614b9e614b13565b500390565b60006fffffffffffffffffffffffffffffffff808316818516808303821115614bce57614bce614b13565b01949350505050565b600060ff821660ff841680821015614bf157614bf1614b13565b90039392505050565b600060208284031215614c0c57600080fd5b815161286f816148ab565b60008060408385031215614c2a57600080fd5b8251614c3581614a38565b60208401519092506149fc81614a38565b600063ffffffff83811690831681811015614b6b57614b6b614b13565b600060208284031215614c7557600080fd5b815161286f816149c0565b600060808284031215614c9257600080fd5b6040516080810181811067ffffffffffffffff82111715614cdc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251614cea816148ab565b8152602083810151908201526040830151614d0481614a38565b60408201526060830151614d1781614a38565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006effffffffffffffffffffffffffffff80841680614d9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910692915050565b60008219821115614dba57614dba614b13565b50019056fea164736f6c634300080f000a", } // ValidatorManagerABI is the input ABI used to generate the binding from. diff --git a/kroma-bindings/bindings/validatormanager_more.go b/kroma-bindings/bindings/validatormanager_more.go index 0597b1b57..f74653310 100644 --- a/kroma-bindings/bindings/validatormanager_more.go +++ b/kroma-bindings/bindings/validatormanager_more.go @@ -13,8 +13,7 @@ const ValidatorManagerStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contr var ValidatorManagerStorageLayout = new(solc.StorageLayout) -var ValidatorManagerDeployedBin = "0x608060405234801561001057600080fd5b50600436106102255760003560e01c8063891aab741161012a578063b91b2723116100bd578063cdff5e191161008c578063dff221b511610071578063dff221b5146106c0578063e0cc26a2146106f1578063e7816b7f1461072357600080fd5b8063cdff5e191461067c578063dea152541461069957600080fd5b8063b91b2723146102ac578063b9551f8214610611578063be11934714610656578063be995dc21461066957600080fd5b8063abeba449116100f9578063abeba449146104fe578063ac6c525114610525578063af6ca7621461059a578063b2653fe3146105ea57600080fd5b8063891aab741461048a5780638ee4b6021461049d578063970531c1146104b05780639d6b2e37146104eb57600080fd5b80633a549046116101bd57806354fd4d501161018c5780635bab847f116101715780635bab847f1461043d5780636874e0421461045057806388576dc91461047757600080fd5b806354fd4d50146103a757806356b65e97146103f057600080fd5b80633a5490461461032a5780633ee4d4a31461033257806342223ae9146103595780634cca5e6c1461038057600080fd5b80631796e52e116101f95780631796e52e146102b457806322009af6146102db578063263a34021461030257806330ccebb51461030a57600080fd5b80621c2ff61461022a578063020810c31461026e5780630763fa7e14610283578063110d6069146102ac575b600080fd5b6102517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61028161027c3660046148aa565b61074a565b005b61028b602881565b6040516fffffffffffffffffffffffffffffffff9091168152602001610265565b61028b606481565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6102816107d6565b61031d6103183660046148aa565b61093e565b60405161026591906148f6565b610251610c47565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6103e36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102659190614937565b61042d6103fe3660046148aa565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff16151590565b6040519015158152602001610265565b61028161044b3660046149b8565b610d75565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b610281610485366004614a07565b610eea565b6102816104983660046148aa565b6111bd565b6102816104ab366004614a40565b61129a565b61028b6104be3660046148aa565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff1690565b6102816104f93660046149b8565b611682565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61057a6105333660046148aa565b6001600160a01b031660009081526003602090815260408083205463ffffffff168352600290915290206001015461010090046effffffffffffffffffffffffffffff1690565b6040516effffffffffffffffffffffffffffff9091168152602001610265565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff1661057a565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61064461061f3660046148aa565b6001600160a01b03166000908152600460205260409020546301000000900460ff1690565b60405160ff9091168152602001610265565b610281610664366004614a85565b6118d3565b610281610677366004614a9e565b611a1a565b610684611e15565b60405163ffffffff9091168152602001610265565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6106446106ce3660046148aa565b6001600160a01b0316600090815260046020526040902054610100900460ff1690565b6106446106ff3660046148aa565b6001600160a01b031660009081526004602052604090205462010000900460ff1690565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b60056107558261093e565b6005811115610766576107666148c7565b14158061079c57506001600160a01b0381166000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b156107d3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60036107e13361093e565b60058111156107f2576107f26148c7565b14158061081f5750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610856576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081523360048201819052610907916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638abf0af0906024015b602060405180830381865afa1580156108da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fe9190614ae0565b60019190611e3a565b60405142815233907ff33a24861b76047debce215c7ae4915a9befc5d870e97efbd4152df23c72112a9060200160405180910390a2565b6001600160a01b03811660009081526004602052604081205460ff1661096657506000919050565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f00000000000000000000000000000000000000000000000000000000000000009091169063981cee5390602401602060405180830381865afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190614ae0565b6fffffffffffffffffffffffffffffffff161015610a5f57506001919050565b6001600160a01b03828116600081815260036020526040908190205490517f12188543000000000000000000000000000000000000000000000000000000008152600481019290925263ffffffff161515917f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f000000000000000000000000000000000000000000000000000000000000000090911690631218854390602401602060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b549190614ae0565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190614ae0565b610c019190614b2c565b6fffffffffffffffffffffffffffffffff161015610c305780610c275750600292915050565b50600492915050565b80610c3e5750600392915050565b50600592915050565b600080546001600160a01b031615610d505760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd9190614b5d565b9050804210610d3f576000610cf28242614b76565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16811115610d3d576001600160a01b039250505090565b505b50506000546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610d808361093e565b9050818015610dbb57506001816005811115610d9e57610d9e6148c7565b1480610dbb57506004816005811115610db957610db96148c7565b145b15610e1957610dcb6001846123bf565b15610e1457826001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051610e0b91815260200190565b60405180910390a25b505050565b6004816005811115610e2d57610e2d6148c7565b10610e14576040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038085166004830152610ee49185917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edb9190614ae0565b60019190612562565b50505050565b6002610ef53361093e565b6005811115610f0657610f066148c7565b1080610f325750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610f69576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260046020526040902080544290610fc1907f00000000000000000000000000000000000000000000000000000000000000009064010000000090046fffffffffffffffffffffffffffffffff16614b8d565b6fffffffffffffffffffffffffffffffff16111561100b576040517f7d7a4d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115611049576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460ff620100009091048116908316819003611092576040517f150393f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160ff168460ff16116110b0576110ab8483614bc1565b6110ba565b6110ba8285614bc1565b835490915060ff630100000090910481169082161115611106576040517f9ed4fa4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffff00000000000000000000000000000000ff00ffff166201000060ff8681169182027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1692909217640100000000426fffffffffffffffffffffffffffffffff1602178555604080519285168352602083019190915233917fc0b29b9b824f7a62d93fde5832bb8307fd62594d0a08d96d533407a0a147ec48910160405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461121f576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611229610c47565b90506001600160a01b03808216148015906112565750806001600160a01b0316826001600160a01b031614155b1561128d576040517fc625317600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112968261074a565b5050565b60006112a53361093e565b60058111156112b6576112b66148c7565b146112ed576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16101561136b576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff831611156113a9576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff821611156113e7576040517f4143808b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526004602081905260409182902080546fffffffffffffffffffffffffffffffff4216640100000000027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff60ff888116630100000002919091167fffffffffffffffffffffffff0000000000000000000000000000000000ffffff918a1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0090941693909317600117169190911717815591517fd7f1a3d800000000000000000000000000000000000000000000000000000000815291927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263d7f1a3d89261152d92918991016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b6020604051808303816000875af115801561154c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115709190614ae0565b506fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169085161080159061161b576040517f8abf0af0000000000000000000000000000000000000000000000000000000008152336004820181905261161b916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638abf0af0906024016108bd565b60408051821515815260ff86811660208301528516818301526fffffffffffffffffffffffffffffffff87166060820152905133917f04ba0c4d7cbac9138f7b73ec9fef796e4ad320bf5fb204f080f81fd59c2d48b9919081900360800190a25050505050565b6001600160a01b0382166000908152600560205260409020546fffffffffffffffffffffffffffffffff166116e3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156117ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176b9190614be4565b6001600160a01b0316336001600160a01b0316146117b5576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186b565b336001600160a01b038316146117fc576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260056020526040902054426fffffffffffffffffffffffffffffffff9091161115611862576040517f1dfc20f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186b82612877565b6001600160a01b03821660008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a25050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611935576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193d6128dc565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa1580156119bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e39190614be4565b6000549091506001600160a01b0390811690821603611a0a57611a0581612877565b611a12565b611a12613018565b6112966130ee565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9c9190614be4565b6001600160a01b0316336001600160a01b031614611ae6576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052600160448401529182917f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9d9190614c01565b91509150611bac836001610d75565b6001600160a01b038316857f1237821480ce4d75f917bc39d1641eb17a5e09a2d5bf982cdd8cb2561aa28e68611be28486614b8d565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390a3611c0f8361336f565b847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633f98365b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614b5d565b1015611ceb57600085815260066020526040902080546fffffffffffffffffffffffffffffffff8082168401167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055611e0e565b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dae9190614c01565b5050611dbb846000610d75565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b0385169086907fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa149060200160405180910390a35b5050505050565b600154600090611e359063ffffffff640100000000820481169116614c30565b905090565b60006040518060e00160405280846001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600115158152602001836effffffffffffffffffffffffffffff168152602001836effffffffffffffffffffffffffffff16815250905083600001600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff1602179055505060008460000160009054906101000a900463ffffffff169050818560010160008363ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548160ff02191690831515021790555060a08201518160010160016101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555060c08201518160010160106101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555090505080856002016000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055508460000160089054906101000a900463ffffffff1663ffffffff1660000361211557845463ffffffff90911668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff90911617909355505050565b845468010000000000000000900463ffffffff165b63ffffffff808216600090815260018089016020526040822090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168b01909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905580549092600160c01b9091041690036122515763ffffffff838116600081815260018a016020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000938616939093029290921790915581547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b909102178155612248878461343f565b50505050505050565b8054600160e01b900463ffffffff166000036123275763ffffffff838116600081815260018a8101602052604090912080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000948716949094029390931783559190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b909102178155612248878461343f565b805463ffffffff600160e01b8204811660009081526001808b016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff700100000000000000000000000000000000928390048116929091041611156123a7578054600160e01b900463ffffffff1691506123b9565b8054600160c01b900463ffffffff1691505b5061212a565b6001600160a01b038116600090815260028301602052604081205463ffffffff168082036123f157600091505061255c565b6001600160a01b03831660009081526002850160209081526040808320805463ffffffff1916905563ffffffff8481168452600180890190935292208054910154740100000000000000000000000000000000000000009091049091169061010090046effffffffffffffffffffffffffffff165b63ffffffff8216156125085763ffffffff91821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612466565b612512868461364b565b50508354600163ffffffff64010000000080840482168301909116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9092169190911785559150505b92915050565b6001600160a01b038216600090815260028401602052604081205463ffffffff16808203612594576000915050612870565b63ffffffff80821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff8781166101008181027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff85161790945593549290910416927401000000000000000000000000000000000000000090910416908210156127445763ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116848803700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff908116820116909202179091555b63ffffffff8216156127345763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168601909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612693565b5061273f878461343f565b612868565b63ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116878503700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff90811682900316909202179091555b63ffffffff82161561285d5763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905554740100000000000000000000000000000000000000009004909116906127bb565b506128688784613dd7565b600193505050505b9392505050565b6001600160a01b038116600090815260046020526040902054610100900460ff16156107d3576001600160a01b0316600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633f98365b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129619190614b5d565b61296c906001614c4d565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f29190614b5d565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a769190614be4565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b8152600401612aa391815260200190565b602060405180830381865afa158015612ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae49190614c65565b612af15760009250505090565b6000805b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16108015612b485750828411155b15612f60576040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bef9190614c65565b15612f60576040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015612c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c969190614be4565b90506000806000612ca684614202565b6040517fad4294510000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526fffffffffffffffffffffffffffffffff858116602484015284811660448401528316606483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063ad42945190608401600060405180830381600087803b158015612d5457600080fd5b505af1158015612d68573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8581168252878116602083015286168183015290516001600160a01b03881693507f36f11936e926f4c5f13247a0f85bfd1361293f182bc6a64bfff082b39aec64d992509081900360600190a26000878152600660205260409020546fffffffffffffffffffffffffffffffff168015612f40576040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015612e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb69190614c01565b505060008881526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905590516fffffffffffffffffffffffffffffffff831681526001600160a01b038716918a917fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa14910160405180910390a35b612f4b856000610d75565b87600101975085600101955050505050612af5565b6fffffffffffffffffffffffffffffffff82161561300d576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663b4c302ff612fb2600187614b76565b6040518263ffffffff1660e01b8152600401612fd091815260200190565b600060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b50505050600194505050505090565b600094505050505090565b6000546001600160a01b03161561309857600080546001600160a01b03168152600460205260409020547f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1661010090910460ff161061309a57600054613098906001600160a01b031661336f565b565b600080546001600160a01b03168152600460205260409020805460ff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff1680156133445760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633f98365b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561319f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c39190614b5d565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa158015613247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326b9190614c82565b905060008382602001514341446001436132859190614b76565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6132f69190614d54565b90506133036001826142eb565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055506107d3915050565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b60006133ad6fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614c4d565b6001600160a01b03831660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8616908117909155915191825292935090917f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a25050565b63ffffffff80821660009081526001840160205260408082208054740100000000000000000000000000000000000000009004909316825290205b815474010000000000000000000000000000000000000000900463ffffffff16158015906134cd5750600180820154908301546effffffffffffffffffffffffffffff6101009283900481169290910416115b15610ee457815481547fffffffffffffffffffffffff00000000000000000000000000000000000000008083166001600160a01b03928316178555835416918116919091178255600180840180548483018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117875584549584900483169384029516949094179092558354929003700100000000000000000000000000000000808404831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790558354821660009081526002870160209081526040808320805463ffffffff998a1663ffffffff19918216179091558754965490951683528083208054909516740100000000000000000000000000000000000000009687900489161790945594548490048616808252918701909452818420805493909304909416835290912061347a565b63ffffffff8082166000908152600184016020526040812080549092600160c01b90910416900361392e578054600160e01b900463ffffffff166000036137dd57805474010000000000000000000000000000000000000000900463ffffffff166000036136de5782547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff168355613799565b600181015460ff161561374657805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff169055613799565b805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555b5063ffffffff1660009081526001918201602052604081209081550180547fff00000000000000000000000000000000000000000000000000000000000000169055565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613dd1565b8054600160e01b900463ffffffff16600003613a9557805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613dd1565b805463ffffffff600160e01b82048116600090815260018087016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff61010092839004811692909104161115613c6357805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff821681178355600160e01b9096048c168a52868a20909801549254700100000000000000000000000000000000908190048316938190048316939093019091169091027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951791909117909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613dd1565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559354600160c01b9096048c168a52868a2090980154700100000000000000000000000000000000908190048316958190048316959095019091169093027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091167fff000000000000000000000000000000000000000000000000000000000000ff90961695909517949094179055915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116905b5061364b565b5b63ffffffff8082166000908152600180850160205260408083208054600160e01b810486168552828520840154600160c01b90910490951684529220015490916effffffffffffffffffffffffffffff61010091829004811691909204909116111561402057600180820154825463ffffffff600160c01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610e1457805463ffffffff600160c01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613dd8565b600180820154825463ffffffff600160e01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610e1457805463ffffffff600160e01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613dd8565b6001600160a01b0381166000908152600460205260408120548190819062010000900460ff1681614232866144ba565b90506000806142776fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008501168560646145f0565b90506142ba6fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166064868103906145f0565b91506142dd6fffffffffffffffffffffffffffffffff84166064868103906145f0565b919891975095509350505050565b815460009068010000000000000000900463ffffffff165b63ffffffff80821660009081526001808701602052604080832054600160c01b9004909316825291902001546effffffffffffffffffffffffffffff8085167001000000000000000000000000000000009092041611156143845763ffffffff9081166000908152600185016020526040902054600160c01b900416614303565b63ffffffff8181166000818152600187810160205260408083208054600160c01b9004909516835282208101549290915291909101547001000000000000000000000000000000009091046effffffffffffffffffffffffffffff9081169094039384811661010090920416111561441d5763ffffffff1660009081526001840160205260409020546001600160a01b0316905061255c565b63ffffffff818116600090815260018681016020526040808320808301549054600160e01b9004909416835290912001546101009091046effffffffffffffffffffffffffffff908116909403938481167001000000000000000000000000000000009092041611156144b05763ffffffff9081166000908152600185016020526040902054600160e01b900416614303565b600091505061255c565b6040517f913f1a9f0000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063913f1a9f90602401602060405180830381865afa15801561453e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145629190614ae0565b905060006145a56fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602860646145f0565b90506145e8816fffffffffffffffffffffffffffffffff16650100000000006145e1856fffffffffffffffffffffffffffffffff1660646146a4565b919061476b565b949350505050565b6000838302608081901c6fffffffffffffffffffffffffffffffff841611614679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f770000000060448201526064015b60405180910390fd5b826fffffffffffffffffffffffffffffffff16818161469a5761469a614d25565b0495945050505050565b60008083831080156146bd57600181146146d0576146df565b65010000000000850284900491506146df565b65010000000000840285900491505b506402ef6c3406818002602890811c808402821c808202831c808302841c808402851c938402851c95909502841c641da06a6e33909502841c6455232d2bb2909202841c640d4ca0c283909302841c643177d95571909102841c64fffe4bcada90960290931c949094019190910103919091030390508183111561255c576501921fb544430392915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036147c3578382816147b9576147b9614d25565b0492505050612870565b80841161482c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401614670565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03811681146107d357600080fd5b6000602082840312156148bc57600080fd5b813561287081614895565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614931577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b8181101561496457858101830151858201604001528201614948565b81811115614976576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b80151581146107d357600080fd5b600080604083850312156149cb57600080fd5b82356149d681614895565b915060208301356149e6816149aa565b809150509250929050565b803560ff81168114614a0257600080fd5b919050565b600060208284031215614a1957600080fd5b612870826149f1565b6fffffffffffffffffffffffffffffffff811681146107d357600080fd5b600080600060608486031215614a5557600080fd5b8335614a6081614a22565b9250614a6e602085016149f1565b9150614a7c604085016149f1565b90509250925092565b600060208284031215614a9757600080fd5b5035919050565b600080600060608486031215614ab357600080fd5b833592506020840135614ac581614895565b91506040840135614ad581614895565b809150509250925092565b600060208284031215614af257600080fd5b815161287081614a22565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006fffffffffffffffffffffffffffffffff83811690831681811015614b5557614b55614afd565b039392505050565b600060208284031215614b6f57600080fd5b5051919050565b600082821015614b8857614b88614afd565b500390565b60006fffffffffffffffffffffffffffffffff808316818516808303821115614bb857614bb8614afd565b01949350505050565b600060ff821660ff841680821015614bdb57614bdb614afd565b90039392505050565b600060208284031215614bf657600080fd5b815161287081614895565b60008060408385031215614c1457600080fd5b8251614c1f81614a22565b60208401519092506149e681614a22565b600063ffffffff83811690831681811015614b5557614b55614afd565b60008219821115614c6057614c60614afd565b500190565b600060208284031215614c7757600080fd5b8151612870816149aa565b600060808284031215614c9457600080fd5b6040516080810181811067ffffffffffffffff82111715614cde577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251614cec81614895565b8152602083810151908201526040830151614d0681614a22565b60408201526060830151614d1981614a22565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006effffffffffffffffffffffffffffff80841680614d9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b9216919091069291505056fea164736f6c634300080f000a" - +var ValidatorManagerDeployedBin = "0x608060405234801561001057600080fd5b50600436106102255760003560e01c8063891aab741161012a578063b91b2723116100bd578063cdff5e191161008c578063dff221b511610071578063dff221b5146106c0578063e0cc26a2146106f1578063e7816b7f1461072357600080fd5b8063cdff5e191461067c578063dea152541461069957600080fd5b8063b91b2723146102ac578063b9551f8214610611578063be11934714610656578063be995dc21461066957600080fd5b8063abeba449116100f9578063abeba449146104fe578063ac6c525114610525578063af6ca7621461059a578063b2653fe3146105ea57600080fd5b8063891aab741461048a5780638ee4b6021461049d578063970531c1146104b05780639d6b2e37146104eb57600080fd5b80633a549046116101bd57806354fd4d501161018c5780635bab847f116101715780635bab847f1461043d5780636874e0421461045057806388576dc91461047757600080fd5b806354fd4d50146103a757806356b65e97146103f057600080fd5b80633a5490461461032a5780633ee4d4a31461033257806342223ae9146103595780634cca5e6c1461038057600080fd5b80631796e52e116101f95780631796e52e146102b457806322009af6146102db578063263a34021461030257806330ccebb51461030a57600080fd5b80621c2ff61461022a578063020810c31461026e5780630763fa7e14610283578063110d6069146102ac575b600080fd5b6102517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61028161027c3660046148c0565b61074a565b005b61028b602881565b6040516fffffffffffffffffffffffffffffffff9091168152602001610265565b61028b606481565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6102816107d6565b61031d6103183660046148c0565b61093e565b604051610265919061490c565b610251610c47565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6103e36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610265919061494d565b61042d6103fe3660046148c0565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff16151590565b6040519015158152602001610265565b61028161044b3660046149ce565b610d75565b6102517f000000000000000000000000000000000000000000000000000000000000000081565b610281610485366004614a1d565b610eea565b6102816104983660046148c0565b6111bd565b6102816104ab366004614a56565b61129a565b61028b6104be3660046148c0565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff1690565b6102816104f93660046149ce565b611682565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61057a6105333660046148c0565b6001600160a01b031660009081526003602090815260408083205463ffffffff168352600290915290206001015461010090046effffffffffffffffffffffffffffff1690565b6040516effffffffffffffffffffffffffffff9091168152602001610265565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff1661057a565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b61064461061f3660046148c0565b6001600160a01b03166000908152600460205260409020546301000000900460ff1690565b60405160ff9091168152602001610265565b610281610664366004614a9b565b6118d3565b610281610677366004614ab4565b611a1a565b610684611e14565b60405163ffffffff9091168152602001610265565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6106446106ce3660046148c0565b6001600160a01b0316600090815260046020526040902054610100900460ff1690565b6106446106ff3660046148c0565b6001600160a01b031660009081526004602052604090205462010000900460ff1690565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b60056107558261093e565b6005811115610766576107666148dd565b14158061079c57506001600160a01b0381166000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b156107d3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60036107e13361093e565b60058111156107f2576107f26148dd565b14158061081f5750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610856576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081523360048201819052610907916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638abf0af0906024015b602060405180830381865afa1580156108da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fe9190614af6565b60019190611e39565b60405142815233907ff33a24861b76047debce215c7ae4915a9befc5d870e97efbd4152df23c72112a9060200160405180910390a2565b6001600160a01b03811660009081526004602052604081205460ff1661096657506000919050565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f00000000000000000000000000000000000000000000000000000000000000009091169063981cee5390602401602060405180830381865afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190614af6565b6fffffffffffffffffffffffffffffffff161015610a5f57506001919050565b6001600160a01b03828116600081815260036020526040908190205490517f12188543000000000000000000000000000000000000000000000000000000008152600481019290925263ffffffff161515917f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16917f000000000000000000000000000000000000000000000000000000000000000090911690631218854390602401602060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b549190614af6565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190614af6565b610c019190614b42565b6fffffffffffffffffffffffffffffffff161015610c305780610c275750600292915050565b50600492915050565b80610c3e5750600392915050565b50600592915050565b600080546001600160a01b031615610d505760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd9190614b73565b9050804210610d3f576000610cf28242614b8c565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16811115610d3d576001600160a01b039250505090565b505b50506000546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610d808361093e565b9050818015610dbb57506001816005811115610d9e57610d9e6148dd565b1480610dbb57506004816005811115610db957610db96148dd565b145b15610e1957610dcb6001846123be565b15610e1457826001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d996142604051610e0b91815260200190565b60405180910390a25b505050565b6004816005811115610e2d57610e2d6148dd565b10610e14576040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b038085166004830152610ee49185917f00000000000000000000000000000000000000000000000000000000000000001690638abf0af090602401602060405180830381865afa158015610eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edb9190614af6565b60019190612561565b50505050565b6002610ef53361093e565b6005811115610f0657610f066148dd565b1080610f325750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610f69576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260046020526040902080544290610fc1907f00000000000000000000000000000000000000000000000000000000000000009064010000000090046fffffffffffffffffffffffffffffffff16614ba3565b6fffffffffffffffffffffffffffffffff16111561100b576040517f7d7a4d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff83161115611049576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460ff620100009091048116908316819003611092576040517f150393f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160ff168460ff16116110b0576110ab8483614bd7565b6110ba565b6110ba8285614bd7565b835490915060ff630100000090910481169082161115611106576040517f9ed4fa4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffff00000000000000000000000000000000ff00ffff166201000060ff8681169182027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1692909217640100000000426fffffffffffffffffffffffffffffffff1602178555604080519285168352602083019190915233917fc0b29b9b824f7a62d93fde5832bb8307fd62594d0a08d96d533407a0a147ec48910160405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461121f576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611229610c47565b90506001600160a01b03808216148015906112565750806001600160a01b0316826001600160a01b031614155b1561128d576040517fc625317600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112968261074a565b5050565b60006112a53361093e565b60058111156112b6576112b66148dd565b146112ed576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16101561136b576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff831611156113a9576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff821611156113e7576040517f4143808b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526004602081905260409182902080546fffffffffffffffffffffffffffffffff4216640100000000027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff60ff888116630100000002919091167fffffffffffffffffffffffff0000000000000000000000000000000000ffffff918a1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0090941693909317600117169190911717815591517fd7f1a3d800000000000000000000000000000000000000000000000000000000815291927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263d7f1a3d89261152d92918991016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b6020604051808303816000875af115801561154c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115709190614af6565b506fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169085161080159061161b576040517f8abf0af0000000000000000000000000000000000000000000000000000000008152336004820181905261161b916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638abf0af0906024016108bd565b60408051821515815260ff86811660208301528516818301526fffffffffffffffffffffffffffffffff87166060820152905133917f04ba0c4d7cbac9138f7b73ec9fef796e4ad320bf5fb204f080f81fd59c2d48b9919081900360800190a25050505050565b6001600160a01b0382166000908152600560205260409020546fffffffffffffffffffffffffffffffff166116e3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156117ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176b9190614bfa565b6001600160a01b0316336001600160a01b0316146117b5576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186b565b336001600160a01b038316146117fc576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260056020526040902054426fffffffffffffffffffffffffffffffff9091161115611862576040517f1dfc20f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186b82612876565b6001600160a01b03821660008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a25050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611935576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193d6128db565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa1580156119bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e39190614bfa565b6000549091506001600160a01b0390811690821603611a0a57611a0581612876565b611a12565b611a12613015565b6112966130eb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9c9190614bfa565b6001600160a01b0316336001600160a01b031614611ae6576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052600160448401529182917f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9d9190614c17565b91509150611bac836001610d75565b6001600160a01b038316857f1237821480ce4d75f917bc39d1641eb17a5e09a2d5bf982cdd8cb2561aa28e68611be28486614ba3565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390a3611c0f83613385565b847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614b73565b11611cea57600085815260066020526040902080546fffffffffffffffffffffffffffffffff8082168401167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055611e0d565b6040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015611d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dad9190614c17565b5050611dba846000610d75565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b0385169086907fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa149060200160405180910390a35b5050505050565b600154600090611e349063ffffffff640100000000820481169116614c46565b905090565b60006040518060e00160405280846001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600115158152602001836effffffffffffffffffffffffffffff168152602001836effffffffffffffffffffffffffffff16815250905083600001600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff1602179055505060008460000160009054906101000a900463ffffffff169050818560010160008363ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548160ff02191690831515021790555060a08201518160010160016101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555060c08201518160010160106101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555090505080856002016000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055508460000160089054906101000a900463ffffffff1663ffffffff1660000361211457845463ffffffff90911668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff90911617909355505050565b845468010000000000000000900463ffffffff165b63ffffffff808216600090815260018089016020526040822090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168b01909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905580549092600160c01b9091041690036122505763ffffffff838116600081815260018a016020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000938616939093029290921790915581547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b9091021781556122478784613455565b50505050505050565b8054600160e01b900463ffffffff166000036123265763ffffffff838116600081815260018a8101602052604090912080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000948716949094029390931783559190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b9091021781556122478784613455565b805463ffffffff600160e01b8204811660009081526001808b016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff700100000000000000000000000000000000928390048116929091041611156123a6578054600160e01b900463ffffffff1691506123b8565b8054600160c01b900463ffffffff1691505b50612129565b6001600160a01b038116600090815260028301602052604081205463ffffffff168082036123f057600091505061255b565b6001600160a01b03831660009081526002850160209081526040808320805463ffffffff1916905563ffffffff8481168452600180890190935292208054910154740100000000000000000000000000000000000000009091049091169061010090046effffffffffffffffffffffffffffff165b63ffffffff8216156125075763ffffffff91821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612465565b6125118684613661565b50508354600163ffffffff64010000000080840482168301909116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9092169190911785559150505b92915050565b6001600160a01b038216600090815260028401602052604081205463ffffffff1680820361259357600091505061286f565b63ffffffff80821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff8781166101008181027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff85161790945593549290910416927401000000000000000000000000000000000000000090910416908210156127435763ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116848803700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff908116820116909202179091555b63ffffffff8216156127335763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168601909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612692565b5061273e8784613455565b612867565b63ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116878503700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff90811682900316909202179091555b63ffffffff82161561285c5763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905554740100000000000000000000000000000000000000009004909116906127ba565b506128678784613ded565b600193505050505b9392505050565b6001600160a01b038116600090815260046020526040902054610100900460ff16156107d3576001600160a01b0316600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129609190614b73565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e69190614b73565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a9190614bfa565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b8152600401612a9791815260200190565b602060405180830381865afa158015612ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad89190614c63565b612ae55760009250505090565b6000805b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16108015612b3c5750828411155b15612f54576040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be39190614c63565b15612f54576040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa158015612c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8a9190614bfa565b90506000806000612c9a84614218565b6040517fad4294510000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526fffffffffffffffffffffffffffffffff858116602484015284811660448401528316606483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063ad42945190608401600060405180830381600087803b158015612d4857600080fd5b505af1158015612d5c573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8581168252878116602083015286168183015290516001600160a01b03881693507f36f11936e926f4c5f13247a0f85bfd1361293f182bc6a64bfff082b39aec64d992509081900360600190a26000878152600660205260409020546fffffffffffffffffffffffffffffffff168015612f34576040517f3ecf0ced0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526fffffffffffffffffffffffffffffffff83166024830152600060448301527f00000000000000000000000000000000000000000000000000000000000000001690633ecf0ced9060640160408051808303816000875af1158015612e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eaa9190614c17565b505060008881526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905590516fffffffffffffffffffffffffffffffff831681526001600160a01b038716918a917fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa14910160405180910390a35b612f3f856000610d75565b87600101975085600101955050505050612ae9565b6fffffffffffffffffffffffffffffffff82161561300a576040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639902cdc090602401600060405180830381600087803b158015612fe757600080fd5b505af1158015612ffb573d6000803e3d6000fd5b50505050600194505050505090565b600094505050505090565b6000546001600160a01b03161561309557600080546001600160a01b03168152600460205260409020547f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1661010090910460ff161061309757600054613095906001600160a01b0316613385565b565b600080546001600160a01b03168152600460205260409020805460ff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055565b6001805468010000000000000000900463ffffffff1660009081526002602052604081209091015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561319a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131be9190614b73565b90506000826effffffffffffffffffffffffffffff161180156131e15750600081115b156133595760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae557613222600185614b8c565b6040518263ffffffff1660e01b815260040161324091815260200190565b608060405180830381865afa15801561325d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132819190614c80565b9050600083826020015143414460014361329b9190614b8c565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c61330c9190614d52565b9050613319600182614301565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055506112969050565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b60006133c36fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614da7565b6001600160a01b03831660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8616908117909155915191825292935090917f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a25050565b63ffffffff80821660009081526001840160205260408082208054740100000000000000000000000000000000000000009004909316825290205b815474010000000000000000000000000000000000000000900463ffffffff16158015906134e35750600180820154908301546effffffffffffffffffffffffffffff6101009283900481169290910416115b15610ee457815481547fffffffffffffffffffffffff00000000000000000000000000000000000000008083166001600160a01b03928316178555835416918116919091178255600180840180548483018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117875584549584900483169384029516949094179092558354929003700100000000000000000000000000000000808404831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790558354821660009081526002870160209081526040808320805463ffffffff998a1663ffffffff199182161790915587549654909516835280832080549095167401000000000000000000000000000000000000000096879004891617909455945484900486168082529187019094528184208054939093049094168352909120613490565b63ffffffff8082166000908152600184016020526040812080549092600160c01b909104169003613944578054600160e01b900463ffffffff166000036137f357805474010000000000000000000000000000000000000000900463ffffffff166000036136f45782547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1683556137af565b600181015460ff161561375c57805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1690556137af565b805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555b5063ffffffff1660009081526001918201602052604081209081550180547fff00000000000000000000000000000000000000000000000000000000000000169055565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613de7565b8054600160e01b900463ffffffff16600003613aab57805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613de7565b805463ffffffff600160e01b82048116600090815260018087016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff61010092839004811692909104161115613c7957805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff821681178355600160e01b9096048c168a52868a20909801549254700100000000000000000000000000000000908190048316938190048316939093019091169091027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951791909117909355915490951682526002880190945292909220805494821663ffffffff199095169490941790935581540490911690613de7565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559354600160c01b9096048c168a52868a2090980154700100000000000000000000000000000000908190048316958190048316959095019091169093027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091167fff000000000000000000000000000000000000000000000000000000000000ff90961695909517949094179055915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116905b50613661565b5b63ffffffff8082166000908152600180850160205260408083208054600160e01b810486168552828520840154600160c01b90910490951684529220015490916effffffffffffffffffffffffffffff61010091829004811691909204909116111561403657600180820154825463ffffffff600160c01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610e1457805463ffffffff600160c01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613dee565b600180820154825463ffffffff600160e01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff61010092839004811692909104161115610e1457805463ffffffff600160e01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c1617905588548690048716808652928252838520549097168452959095529020805490951690921790935590540416613dee565b6001600160a01b0381166000908152600460205260408120548190819062010000900460ff1681614248866144d0565b905060008061428d6fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000850116856064614606565b90506142d06fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016606486810390614606565b91506142f36fffffffffffffffffffffffffffffffff8416606486810390614606565b919891975095509350505050565b815460009068010000000000000000900463ffffffff165b63ffffffff80821660009081526001808701602052604080832054600160c01b9004909316825291902001546effffffffffffffffffffffffffffff80851670010000000000000000000000000000000090920416111561439a5763ffffffff9081166000908152600185016020526040902054600160c01b900416614319565b63ffffffff8181166000818152600187810160205260408083208054600160c01b9004909516835282208101549290915291909101547001000000000000000000000000000000009091046effffffffffffffffffffffffffffff908116909403938481166101009092041611156144335763ffffffff1660009081526001840160205260409020546001600160a01b0316905061255b565b63ffffffff818116600090815260018681016020526040808320808301549054600160e01b9004909416835290912001546101009091046effffffffffffffffffffffffffffff908116909403938481167001000000000000000000000000000000009092041611156144c65763ffffffff9081166000908152600185016020526040902054600160e01b900416614319565b600091505061255b565b6040517f913f1a9f0000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063913f1a9f90602401602060405180830381865afa158015614554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145789190614af6565b905060006145bb6fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660286064614606565b90506145fe816fffffffffffffffffffffffffffffffff16650100000000006145f7856fffffffffffffffffffffffffffffffff1660646146ba565b9190614781565b949350505050565b6000838302608081901c6fffffffffffffffffffffffffffffffff84161161468f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f770000000060448201526064015b60405180910390fd5b826fffffffffffffffffffffffffffffffff1681816146b0576146b0614d23565b0495945050505050565b60008083831080156146d357600181146146e6576146f5565b65010000000000850284900491506146f5565b65010000000000840285900491505b506402ef6c3406818002602890811c808402821c808202831c808302841c808402851c938402851c95909502841c641da06a6e33909502841c6455232d2bb2909202841c640d4ca0c283909302841c643177d95571909102841c64fffe4bcada90960290931c949094019190910103919091030390508183111561255b576501921fb544430392915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036147d9578382816147cf576147cf614d23565b049250505061286f565b808411614842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401614686565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03811681146107d357600080fd5b6000602082840312156148d257600080fd5b813561286f816148ab565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614947577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b8181101561497a5785810183015185820160400152820161495e565b8181111561498c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b80151581146107d357600080fd5b600080604083850312156149e157600080fd5b82356149ec816148ab565b915060208301356149fc816149c0565b809150509250929050565b803560ff81168114614a1857600080fd5b919050565b600060208284031215614a2f57600080fd5b61286f82614a07565b6fffffffffffffffffffffffffffffffff811681146107d357600080fd5b600080600060608486031215614a6b57600080fd5b8335614a7681614a38565b9250614a8460208501614a07565b9150614a9260408501614a07565b90509250925092565b600060208284031215614aad57600080fd5b5035919050565b600080600060608486031215614ac957600080fd5b833592506020840135614adb816148ab565b91506040840135614aeb816148ab565b809150509250925092565b600060208284031215614b0857600080fd5b815161286f81614a38565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006fffffffffffffffffffffffffffffffff83811690831681811015614b6b57614b6b614b13565b039392505050565b600060208284031215614b8557600080fd5b5051919050565b600082821015614b9e57614b9e614b13565b500390565b60006fffffffffffffffffffffffffffffffff808316818516808303821115614bce57614bce614b13565b01949350505050565b600060ff821660ff841680821015614bf157614bf1614b13565b90039392505050565b600060208284031215614c0c57600080fd5b815161286f816148ab565b60008060408385031215614c2a57600080fd5b8251614c3581614a38565b60208401519092506149fc81614a38565b600063ffffffff83811690831681811015614b6b57614b6b614b13565b600060208284031215614c7557600080fd5b815161286f816149c0565b600060808284031215614c9257600080fd5b6040516080810181811067ffffffffffffffff82111715614cdc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251614cea816148ab565b8152602083810151908201526040830151614d0481614a38565b60408201526060830151614d1781614a38565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006effffffffffffffffffffffffffffff80841680614d9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910692915050565b60008219821115614dba57614dba614b13565b50019056fea164736f6c634300080f000a" func init() { if err := json.Unmarshal([]byte(ValidatorManagerStorageLayoutJSON), ValidatorManagerStorageLayout); err != nil { diff --git a/kroma-bindings/bindings/validatorpool.go b/kroma-bindings/bindings/validatorpool.go index 1768d238f..92ee1da50 100644 --- a/kroma-bindings/bindings/validatorpool.go +++ b/kroma-bindings/bindings/validatorpool.go @@ -32,7 +32,7 @@ var ( // ValidatorPoolMetaData contains all meta data concerning the ValidatorPool contract. var ValidatorPoolMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_l2OutputOracle\",\"type\":\"address\",\"internalType\":\"contractL2OutputOracle\"},{\"name\":\"_portal\",\"type\":\"address\",\"internalType\":\"contractKromaPortal\"},{\"name\":\"_securityCouncil\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_trustedValidator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_requiredBondAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_maxUnbond\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_roundDuration\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_terminateOutputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"L2_ORACLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractL2OutputOracle\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_UNBOND\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PORTAL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractKromaPortal\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"REQUIRED_BOND_AMOUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ROUND_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SECURITY_COUNCIL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TAX_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TAX_NUMERATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TERMINATE_OUTPUT_INDEX\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TRUSTED_VALIDATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VAULT_REWARD_GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addPendingBond\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createBond\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_expiresAt\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getBond\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTypes.Bond\",\"components\":[{\"name\":\"amount\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"expiresAt\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingBond\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBond\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isTerminated\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isValidator\",\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextValidator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"releasePendingBond\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unbond\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawTo\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BondIncreased\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Bonded\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"},{\"name\":\"expiresAt\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingBondAdded\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingBondReleased\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unbonded\",\"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}]", - Bin: "0x6101806040523480156200001257600080fd5b5060405162002d3638038062002d36833981016040819052620000359162000256565b6001600160a01b0380891660805287811660a05286811660c052851660e0526001600160801b038416610100526101208390526101608190526101408290526200007e6200008c565b5050505050505050620002e5565b600054610100900460ff1615808015620000ad5750600054600160ff909116105b80620000dd5750620000ca30620001be60201b62001a6f1760201c565b158015620000dd575060005460ff166001145b620001465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200016a576000805461ff0019166101001790555b62000174620001cd565b8015620001bb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff166200023a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016200013d565b60018055565b6001600160a01b0381168114620001bb57600080fd5b600080600080600080600080610100898b0312156200027457600080fd5b8851620002818162000240565b60208a0151909850620002948162000240565b60408a0151909750620002a78162000240565b60608a0151909650620002ba8162000240565b60808a015160a08b015160c08c015160e0909c01519a9d999c50979a91999098919650945092505050565b60805160a05160c05160e05161010051610120516101405161016051612943620003f36000396000818161030701528181610568015261114d01526000818161040f0152610b8d0152600081816104e40152611eaf0152600081816105ad01528181610db401528181610e3501528181611497015281816114cf01528181611b730152611d710152600081816103500152610bd80152600081816102b3015281816119850152611dbe01526000818161023d01526123840152600081816101cd0152818161086d01528181610af401528181610bfc01528181611175015281816112a50152818161141c0152818161169401528181611f790152818161208d01526121bf01526129436000f3fe6080604052600436106101b65760003560e01c806370a08231116100ec578063ad36d6cc1161008a578063d38dc7ee11610064578063d38dc7ee146105d7578063d8fe7642146105f7578063dd215c5d14610647578063facd743b1461066757600080fd5b8063ad36d6cc1461054b578063b7d636a51461059b578063d0e30db0146105cf57600080fd5b80638f09ade4116100c65780638f09ade4146104b2578063946765fd146104d2578063a51c9ace14610506578063ab91f1901461051b57600080fd5b806370a08231146104315780638129fc1c1461046757806382dae3aa1461047c57600080fd5b806339111af81161015957806354fd4d501161013357806354fd4d50146103725780635a544742146103c85780635df6a6bc146103e85780636641ea08146103fd57600080fd5b806339111af8146102f55780633a549046146103295780633ee4d4a31461033e57600080fd5b8063205c287811610195578063205c28781461025f5780632e1a7d4d1461028157806336086417146102a157806336b83469146102d557600080fd5b80621c2ff6146101bb5780630f43a6771461020c5780630ff754ea1461022b575b600080fd5b3480156101c757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021857600080fd5b506036545b604051908152602001610203565b34801561023757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026b57600080fd5b5061027f61027a3660046124f6565b610687565b005b34801561028d57600080fd5b5061027f61029c366004612522565b6107ba565b3480156102ad57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e157600080fd5b5061027f6102f036600461253b565b61086b565b34801561030157600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561033557600080fd5b506101ef610adc565b34801561034a57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037e57600080fd5b506103bb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b60405161020391906125e8565b3480156103d457600080fd5b5061027f6103e33660046125fb565b610bfa565b3480156103f457600080fd5b5061027f610ea3565b34801561040957600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043d57600080fd5b5061021d61044c36600461262b565b6001600160a01b031660009081526033602052604090205490565b34801561047357600080fd5b5061027f610f22565b34801561048857600080fd5b50610491601481565b6040516fffffffffffffffffffffffffffffffff9091168152602001610203565b3480156104be57600080fd5b506104916104cd3660046125fb565b611099565b3480156104de57600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561051257600080fd5b50610491606481565b34801561052757600080fd5b50610532620186a081565b60405167ffffffffffffffff9091168152602001610203565b34801561055757600080fd5b5061058b610566366004612522565b7f00000000000000000000000000000000000000000000000000000000000000001090565b6040519015158152602001610203565b3480156105a757600080fd5b506104917f000000000000000000000000000000000000000000000000000000000000000081565b61027f611148565b3480156105e357600080fd5b5061027f6105f2366004612666565b61129a565b34801561060357600080fd5b50610617610612366004612522565b611573565b6040805182516fffffffffffffffffffffffffffffffff9081168252602093840151169281019290925201610203565b34801561065357600080fd5b5061027f6106623660046125fb565b611692565b34801561067357600080fd5b5061058b61068236600461262b565b6119f8565b61068f611a7e565b6001600160a01b0382166107105760405162461bcd60e51b815260206004820152603260248201527f56616c696461746f72506f6f6c3a2063616e6e6f74207769746864726177207460448201527f6f20746865207a65726f2061646472657373000000000000000000000000000060648201526084015b60405180910390fd5b61071a3382611ad7565b6000610737835a8460405180602001604052806000815250611d29565b9050806107ac5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b506107b660018055565b5050565b6107c2611a7e565b6107cc3382611ad7565b60006107e9335a8460405180602001604052806000815250611d29565b90508061085e5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b5061086860018055565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ed919061268b565b6001600160a01b0316336001600160a01b0316146109735760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff1680610a1b5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055610a7f826fffffffffffffffffffffffffffffffff8316611d49565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610bd55760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7491906126a8565b9050804210610bc4576000610b8982426126f0565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610bc2576001600160a01b039250505090565b505b50506038546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7c919061268b565b6001600160a01b0316336001600160a01b031614610d025760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610dae5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b610dea827f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16611ad7565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610ead611e7d565b9050806108685760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e6400000000000000000000000000000000000000000000006064820152608401610707565b600054610100900460ff1615808015610f425750600054600160ff909116105b80610f5c5750303b158015610f5c575060005460ff166001145b610fce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610707565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561102c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611034612125565b801561086857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff16806111415760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b9392505050565b6111737f00000000000000000000000000000000000000000000000000000000000000006001612707565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636abcf5636040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f591906126a8565b1061128e5760405162461bcd60e51b815260206004820152604260248201527f56616c696461746f72506f6f6c3a206f6e6c792063616e206465706f7369742060448201527f746f2056616c696461746f72506f6f6c206265666f7265207465726d696e617460648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610707565b6112983334611d49565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113385760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c650000000000000000000000000000000000000000006064820152608401610707565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156113e15760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c726561647920657869737473000000006064820152608401610707565b6113e9611e7d565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561146b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148f919061268b565b90506114cd817f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16611ad7565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a361156d6121a2565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906115dd5750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b61164f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f20657869737400000000000000000000000000000000000000000000000000006064820152608401610707565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611714919061268b565b6001600160a01b0316336001600160a01b03161461179a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1610156118465760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806118ee5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b600060646118fd60148461271f565b6119079190612786565b9050600061191582846127b5565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f00000000000000000000000000000000000000000000000000000000000000009091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b6036546000908103611a0c57506000919050565b6001600160a01b038216611a2257506000919050565b6001600160a01b0382166000818152603760205260409020546036805491929183908110611a5257611a526127e6565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b600260015403611ad05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610707565b6002600155565b6001600160a01b03821660009081526033602052604090205481811015611b655760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e636573000000000000000000000000000000000000000000000000000000006064820152608401610707565b611b6f82826126f0565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1681108015611bb65750611bb6836119f8565b15611d0957603654600090611bcd906001906126f0565b90508015611c85576001600160a01b0384166000908152603760205260408120546036805491929184908110611c0557611c056127e6565b600091825260209091200154603680546001600160a01b039092169250829184908110611c3457611c346127e6565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611caf57611caf612815565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611d6d908390612707565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff168110158015611db75750611db5836119f8565b155b15611d09577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611d0957603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f000000000000000000000000000000000000000000000000000000000000000081101561207857600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611f3457506000846fffffffffffffffffffffffffffffffff16115b156120785760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec9190612844565b915061200e8260000151856fffffffffffffffffffffffffffffffff16611d49565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a361206c82612370565b60019485019401611ead565b80156121195760358590556001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663b4c302ff6120bd6001886126f0565b6040518263ffffffff1660e01b81526004016120db91815260200190565b600060405180830381600087803b1580156120f557600080fd5b505af1158015612109573d6000803e3d6000fd5b5050505060019550505050505090565b60009550505050505090565b600054610100900460ff16611d435760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610707565b60365480158015906121b657506000603554115b156123455760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae55760016035546121fb91906126f0565b6040518263ffffffff1660e01b815260040161221991815260200190565b608060405180830381865afa158015612236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225a9190612844565b9050600082826020015143414460014361227491906126f0565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6122e591906128e7565b9050603681815481106122fa576122fa6127e6565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506108689050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b805160608201516040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f22000000000000000000000000000000000000000000000000000000009261241a926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526124ac9392916004016128fb565b600060405180830381600087803b1580156124c657600080fd5b505af11580156124da573d6000803e3d6000fd5b5050505050565b6001600160a01b038116811461086857600080fd5b6000806040838503121561250957600080fd5b8235612514816124e1565b946020939093013593505050565b60006020828403121561253457600080fd5b5035919050565b60008060006060848603121561255057600080fd5b833592506020840135612562816124e1565b91506040840135612572816124e1565b809150509250925092565b6000815180845260005b818110156125a357602081850181015186830182015201612587565b818111156125b5576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611141602083018461257d565b6000806040838503121561260e57600080fd5b823591506020830135612620816124e1565b809150509250929050565b60006020828403121561263d57600080fd5b8135611141816124e1565b6fffffffffffffffffffffffffffffffff8116811461086857600080fd5b6000806040838503121561267957600080fd5b82359150602083013561262081612648565b60006020828403121561269d57600080fd5b8151611141816124e1565b6000602082840312156126ba57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612702576127026126c1565b500390565b6000821982111561271a5761271a6126c1565b500190565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561274e5761274e6126c1565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806127a9576127a9612757565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff838116908316818110156127de576127de6126c1565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006080828403121561285657600080fd5b6040516080810181811067ffffffffffffffff821117156128a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516128ae816124e1565b81526020838101519082015260408301516128c881612648565b604082015260608301516128db81612648565b60608201529392505050565b6000826128f6576128f6612757565b500690565b6001600160a01b038416815267ffffffffffffffff8316602082015260606040820152600061292d606083018461257d565b9594505050505056fea164736f6c634300080f000a", + Bin: "0x6101806040523480156200001257600080fd5b5060405162002d3f38038062002d3f833981016040819052620000359162000256565b6001600160a01b0380891660805287811660a05286811660c052851660e0526001600160801b038416610100526101208390526101608190526101408290526200007e6200008c565b5050505050505050620002e5565b600054610100900460ff1615808015620000ad5750600054600160ff909116105b80620000dd5750620000ca30620001be60201b62001a6f1760201c565b158015620000dd575060005460ff166001145b620001465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200016a576000805461ff0019166101001790555b62000174620001cd565b8015620001bb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff166200023a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016200013d565b60018055565b6001600160a01b0381168114620001bb57600080fd5b600080600080600080600080610100898b0312156200027457600080fd5b8851620002818162000240565b60208a0151909850620002948162000240565b60408a0151909750620002a78162000240565b60608a0151909650620002ba8162000240565b60808a015160a08b015160c08c015160e0909c01519a9d999c50979a91999098919650945092505050565b60805160a05160c05160e0516101005161012051610140516101605161294c620003f36000396000818161030701528181610568015261114d01526000818161040f0152610b8d0152600081816104e40152611eaf0152600081816105ad01528181610db401528181610e3501528181611497015281816114cf01528181611b730152611d710152600081816103500152610bd80152600081816102b3015281816119850152611dbe01526000818161023d015261238d0152600081816101cd0152818161086d01528181610af401528181610bfc01528181611175015281816112a50152818161141c0152818161169401528181611f79015281816120b201526121c8015261294c6000f3fe6080604052600436106101b65760003560e01c806370a08231116100ec578063ad36d6cc1161008a578063d38dc7ee11610064578063d38dc7ee146105d7578063d8fe7642146105f7578063dd215c5d14610647578063facd743b1461066757600080fd5b8063ad36d6cc1461054b578063b7d636a51461059b578063d0e30db0146105cf57600080fd5b80638f09ade4116100c65780638f09ade4146104b2578063946765fd146104d2578063a51c9ace14610506578063ab91f1901461051b57600080fd5b806370a08231146104315780638129fc1c1461046757806382dae3aa1461047c57600080fd5b806339111af81161015957806354fd4d501161013357806354fd4d50146103725780635a544742146103c85780635df6a6bc146103e85780636641ea08146103fd57600080fd5b806339111af8146102f55780633a549046146103295780633ee4d4a31461033e57600080fd5b8063205c287811610195578063205c28781461025f5780632e1a7d4d1461028157806336086417146102a157806336b83469146102d557600080fd5b80621c2ff6146101bb5780630f43a6771461020c5780630ff754ea1461022b575b600080fd5b3480156101c757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021857600080fd5b506036545b604051908152602001610203565b34801561023757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026b57600080fd5b5061027f61027a3660046124ff565b610687565b005b34801561028d57600080fd5b5061027f61029c36600461252b565b6107ba565b3480156102ad57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e157600080fd5b5061027f6102f0366004612544565b61086b565b34801561030157600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561033557600080fd5b506101ef610adc565b34801561034a57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037e57600080fd5b506103bb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b60405161020391906125f1565b3480156103d457600080fd5b5061027f6103e3366004612604565b610bfa565b3480156103f457600080fd5b5061027f610ea3565b34801561040957600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043d57600080fd5b5061021d61044c366004612634565b6001600160a01b031660009081526033602052604090205490565b34801561047357600080fd5b5061027f610f22565b34801561048857600080fd5b50610491601481565b6040516fffffffffffffffffffffffffffffffff9091168152602001610203565b3480156104be57600080fd5b506104916104cd366004612604565b611099565b3480156104de57600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561051257600080fd5b50610491606481565b34801561052757600080fd5b50610532620186a081565b60405167ffffffffffffffff9091168152602001610203565b34801561055757600080fd5b5061058b61056636600461252b565b7f00000000000000000000000000000000000000000000000000000000000000001090565b6040519015158152602001610203565b3480156105a757600080fd5b506104917f000000000000000000000000000000000000000000000000000000000000000081565b61027f611148565b3480156105e357600080fd5b5061027f6105f236600461266f565b61129a565b34801561060357600080fd5b5061061761061236600461252b565b611573565b6040805182516fffffffffffffffffffffffffffffffff9081168252602093840151169281019290925201610203565b34801561065357600080fd5b5061027f610662366004612604565b611692565b34801561067357600080fd5b5061058b610682366004612634565b6119f8565b61068f611a7e565b6001600160a01b0382166107105760405162461bcd60e51b815260206004820152603260248201527f56616c696461746f72506f6f6c3a2063616e6e6f74207769746864726177207460448201527f6f20746865207a65726f2061646472657373000000000000000000000000000060648201526084015b60405180910390fd5b61071a3382611ad7565b6000610737835a8460405180602001604052806000815250611d29565b9050806107ac5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b506107b660018055565b5050565b6107c2611a7e565b6107cc3382611ad7565b60006107e9335a8460405180602001604052806000815250611d29565b90508061085e5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b5061086860018055565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ed9190612694565b6001600160a01b0316336001600160a01b0316146109735760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff1680610a1b5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055610a7f826fffffffffffffffffffffffffffffffff8316611d49565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610bd55760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7491906126b1565b9050804210610bc4576000610b8982426126f9565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610bc2576001600160a01b039250505090565b505b50506038546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7c9190612694565b6001600160a01b0316336001600160a01b031614610d025760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610dae5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b610dea827f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16611ad7565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610ead611e7d565b9050806108685760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e6400000000000000000000000000000000000000000000006064820152608401610707565b600054610100900460ff1615808015610f425750600054600160ff909116105b80610f5c5750303b158015610f5c575060005460ff166001145b610fce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610707565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561102c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61103461212e565b801561086857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff16806111415760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b9392505050565b6111737f00000000000000000000000000000000000000000000000000000000000000006001612710565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636abcf5636040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f591906126b1565b1061128e5760405162461bcd60e51b815260206004820152604260248201527f56616c696461746f72506f6f6c3a206f6e6c792063616e206465706f7369742060448201527f746f2056616c696461746f72506f6f6c206265666f7265207465726d696e617460648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610707565b6112983334611d49565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113385760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c650000000000000000000000000000000000000000006064820152608401610707565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156113e15760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c726561647920657869737473000000006064820152608401610707565b6113e9611e7d565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561146b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148f9190612694565b90506114cd817f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16611ad7565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a361156d6121ab565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906115dd5750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b61164f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f20657869737400000000000000000000000000000000000000000000000000006064820152608401610707565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117149190612694565b6001600160a01b0316336001600160a01b03161461179a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1610156118465760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806118ee5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b600060646118fd601484612728565b611907919061278f565b9050600061191582846127be565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f00000000000000000000000000000000000000000000000000000000000000009091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b6036546000908103611a0c57506000919050565b6001600160a01b038216611a2257506000919050565b6001600160a01b0382166000818152603760205260409020546036805491929183908110611a5257611a526127ef565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b600260015403611ad05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610707565b6002600155565b6001600160a01b03821660009081526033602052604090205481811015611b655760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e636573000000000000000000000000000000000000000000000000000000006064820152608401610707565b611b6f82826126f9565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1681108015611bb65750611bb6836119f8565b15611d0957603654600090611bcd906001906126f9565b90508015611c85576001600160a01b0384166000908152603760205260408120546036805491929184908110611c0557611c056127ef565b600091825260209091200154603680546001600160a01b039092169250829184908110611c3457611c346127ef565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611caf57611caf61281e565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611d6d908390612710565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff168110158015611db75750611db5836119f8565b155b15611d09577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611d0957603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f000000000000000000000000000000000000000000000000000000000000000081101561207857600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611f3457506000846fffffffffffffffffffffffffffffffff16115b156120785760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec919061284d565b915061200e8260000151856fffffffffffffffffffffffffffffffff16611d49565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a361206c82612379565b60019485019401611ead565b80156121225760358590556040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639902cdc090602401600060405180830381600087803b1580156120fe57600080fd5b505af1158015612112573d6000803e3d6000fd5b5050505060019550505050505090565b60009550505050505090565b600054610100900460ff16611d435760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610707565b60365480158015906121bf57506000603554115b1561234e5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae557600160355461220491906126f9565b6040518263ffffffff1660e01b815260040161222291815260200190565b608060405180830381865afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612263919061284d565b9050600082826020015143414460014361227d91906126f9565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6122ee91906128f0565b905060368181548110612303576123036127ef565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506108689050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b805160608201516040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f220000000000000000000000000000000000000000000000000000000092612423926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526124b5939291600401612904565b600060405180830381600087803b1580156124cf57600080fd5b505af11580156124e3573d6000803e3d6000fd5b5050505050565b6001600160a01b038116811461086857600080fd5b6000806040838503121561251257600080fd5b823561251d816124ea565b946020939093013593505050565b60006020828403121561253d57600080fd5b5035919050565b60008060006060848603121561255957600080fd5b83359250602084013561256b816124ea565b9150604084013561257b816124ea565b809150509250925092565b6000815180845260005b818110156125ac57602081850181015186830182015201612590565b818111156125be576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006111416020830184612586565b6000806040838503121561261757600080fd5b823591506020830135612629816124ea565b809150509250929050565b60006020828403121561264657600080fd5b8135611141816124ea565b6fffffffffffffffffffffffffffffffff8116811461086857600080fd5b6000806040838503121561268257600080fd5b82359150602083013561262981612651565b6000602082840312156126a657600080fd5b8151611141816124ea565b6000602082840312156126c357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561270b5761270b6126ca565b500390565b60008219821115612723576127236126ca565b500190565b60006fffffffffffffffffffffffffffffffff80831681851681830481118215151615612757576127576126ca565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806127b2576127b2612760565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e7576127e76126ca565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006080828403121561285f57600080fd5b6040516080810181811067ffffffffffffffff821117156128a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516128b7816124ea565b81526020838101519082015260408301516128d181612651565b604082015260608301516128e481612651565b60608201529392505050565b6000826128ff576128ff612760565b500690565b6001600160a01b038416815267ffffffffffffffff831660208201526060604082015260006129366060830184612586565b9594505050505056fea164736f6c634300080f000a", } // ValidatorPoolABI is the input ABI used to generate the binding from. diff --git a/kroma-bindings/bindings/validatorpool_more.go b/kroma-bindings/bindings/validatorpool_more.go index 918e50cee..65c5a8064 100644 --- a/kroma-bindings/bindings/validatorpool_more.go +++ b/kroma-bindings/bindings/validatorpool_more.go @@ -13,8 +13,7 @@ const ValidatorPoolStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract var ValidatorPoolStorageLayout = new(solc.StorageLayout) -var ValidatorPoolDeployedBin = "0x6080604052600436106101b65760003560e01c806370a08231116100ec578063ad36d6cc1161008a578063d38dc7ee11610064578063d38dc7ee146105d7578063d8fe7642146105f7578063dd215c5d14610647578063facd743b1461066757600080fd5b8063ad36d6cc1461054b578063b7d636a51461059b578063d0e30db0146105cf57600080fd5b80638f09ade4116100c65780638f09ade4146104b2578063946765fd146104d2578063a51c9ace14610506578063ab91f1901461051b57600080fd5b806370a08231146104315780638129fc1c1461046757806382dae3aa1461047c57600080fd5b806339111af81161015957806354fd4d501161013357806354fd4d50146103725780635a544742146103c85780635df6a6bc146103e85780636641ea08146103fd57600080fd5b806339111af8146102f55780633a549046146103295780633ee4d4a31461033e57600080fd5b8063205c287811610195578063205c28781461025f5780632e1a7d4d1461028157806336086417146102a157806336b83469146102d557600080fd5b80621c2ff6146101bb5780630f43a6771461020c5780630ff754ea1461022b575b600080fd5b3480156101c757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021857600080fd5b506036545b604051908152602001610203565b34801561023757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026b57600080fd5b5061027f61027a3660046124f6565b610687565b005b34801561028d57600080fd5b5061027f61029c366004612522565b6107ba565b3480156102ad57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e157600080fd5b5061027f6102f036600461253b565b61086b565b34801561030157600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561033557600080fd5b506101ef610adc565b34801561034a57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037e57600080fd5b506103bb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b60405161020391906125e8565b3480156103d457600080fd5b5061027f6103e33660046125fb565b610bfa565b3480156103f457600080fd5b5061027f610ea3565b34801561040957600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043d57600080fd5b5061021d61044c36600461262b565b6001600160a01b031660009081526033602052604090205490565b34801561047357600080fd5b5061027f610f22565b34801561048857600080fd5b50610491601481565b6040516fffffffffffffffffffffffffffffffff9091168152602001610203565b3480156104be57600080fd5b506104916104cd3660046125fb565b611099565b3480156104de57600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561051257600080fd5b50610491606481565b34801561052757600080fd5b50610532620186a081565b60405167ffffffffffffffff9091168152602001610203565b34801561055757600080fd5b5061058b610566366004612522565b7f00000000000000000000000000000000000000000000000000000000000000001090565b6040519015158152602001610203565b3480156105a757600080fd5b506104917f000000000000000000000000000000000000000000000000000000000000000081565b61027f611148565b3480156105e357600080fd5b5061027f6105f2366004612666565b61129a565b34801561060357600080fd5b50610617610612366004612522565b611573565b6040805182516fffffffffffffffffffffffffffffffff9081168252602093840151169281019290925201610203565b34801561065357600080fd5b5061027f6106623660046125fb565b611692565b34801561067357600080fd5b5061058b61068236600461262b565b6119f8565b61068f611a7e565b6001600160a01b0382166107105760405162461bcd60e51b815260206004820152603260248201527f56616c696461746f72506f6f6c3a2063616e6e6f74207769746864726177207460448201527f6f20746865207a65726f2061646472657373000000000000000000000000000060648201526084015b60405180910390fd5b61071a3382611ad7565b6000610737835a8460405180602001604052806000815250611d29565b9050806107ac5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b506107b660018055565b5050565b6107c2611a7e565b6107cc3382611ad7565b60006107e9335a8460405180602001604052806000815250611d29565b90508061085e5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b5061086860018055565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ed919061268b565b6001600160a01b0316336001600160a01b0316146109735760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff1680610a1b5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055610a7f826fffffffffffffffffffffffffffffffff8316611d49565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610bd55760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7491906126a8565b9050804210610bc4576000610b8982426126f0565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610bc2576001600160a01b039250505090565b505b50506038546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7c919061268b565b6001600160a01b0316336001600160a01b031614610d025760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610dae5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b610dea827f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16611ad7565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610ead611e7d565b9050806108685760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e6400000000000000000000000000000000000000000000006064820152608401610707565b600054610100900460ff1615808015610f425750600054600160ff909116105b80610f5c5750303b158015610f5c575060005460ff166001145b610fce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610707565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561102c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611034612125565b801561086857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff16806111415760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b9392505050565b6111737f00000000000000000000000000000000000000000000000000000000000000006001612707565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636abcf5636040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f591906126a8565b1061128e5760405162461bcd60e51b815260206004820152604260248201527f56616c696461746f72506f6f6c3a206f6e6c792063616e206465706f7369742060448201527f746f2056616c696461746f72506f6f6c206265666f7265207465726d696e617460648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610707565b6112983334611d49565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113385760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c650000000000000000000000000000000000000000006064820152608401610707565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156113e15760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c726561647920657869737473000000006064820152608401610707565b6113e9611e7d565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561146b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148f919061268b565b90506114cd817f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16611ad7565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a361156d6121a2565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906115dd5750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b61164f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f20657869737400000000000000000000000000000000000000000000000000006064820152608401610707565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611714919061268b565b6001600160a01b0316336001600160a01b03161461179a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1610156118465760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806118ee5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b600060646118fd60148461271f565b6119079190612786565b9050600061191582846127b5565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f00000000000000000000000000000000000000000000000000000000000000009091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b6036546000908103611a0c57506000919050565b6001600160a01b038216611a2257506000919050565b6001600160a01b0382166000818152603760205260409020546036805491929183908110611a5257611a526127e6565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b600260015403611ad05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610707565b6002600155565b6001600160a01b03821660009081526033602052604090205481811015611b655760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e636573000000000000000000000000000000000000000000000000000000006064820152608401610707565b611b6f82826126f0565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1681108015611bb65750611bb6836119f8565b15611d0957603654600090611bcd906001906126f0565b90508015611c85576001600160a01b0384166000908152603760205260408120546036805491929184908110611c0557611c056127e6565b600091825260209091200154603680546001600160a01b039092169250829184908110611c3457611c346127e6565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611caf57611caf612815565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611d6d908390612707565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff168110158015611db75750611db5836119f8565b155b15611d09577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611d0957603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f000000000000000000000000000000000000000000000000000000000000000081101561207857600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611f3457506000846fffffffffffffffffffffffffffffffff16115b156120785760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec9190612844565b915061200e8260000151856fffffffffffffffffffffffffffffffff16611d49565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a361206c82612370565b60019485019401611ead565b80156121195760358590556001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663b4c302ff6120bd6001886126f0565b6040518263ffffffff1660e01b81526004016120db91815260200190565b600060405180830381600087803b1580156120f557600080fd5b505af1158015612109573d6000803e3d6000fd5b5050505060019550505050505090565b60009550505050505090565b600054610100900460ff16611d435760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610707565b60365480158015906121b657506000603554115b156123455760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae55760016035546121fb91906126f0565b6040518263ffffffff1660e01b815260040161221991815260200190565b608060405180830381865afa158015612236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225a9190612844565b9050600082826020015143414460014361227491906126f0565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6122e591906128e7565b9050603681815481106122fa576122fa6127e6565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506108689050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b805160608201516040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f22000000000000000000000000000000000000000000000000000000009261241a926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526124ac9392916004016128fb565b600060405180830381600087803b1580156124c657600080fd5b505af11580156124da573d6000803e3d6000fd5b5050505050565b6001600160a01b038116811461086857600080fd5b6000806040838503121561250957600080fd5b8235612514816124e1565b946020939093013593505050565b60006020828403121561253457600080fd5b5035919050565b60008060006060848603121561255057600080fd5b833592506020840135612562816124e1565b91506040840135612572816124e1565b809150509250925092565b6000815180845260005b818110156125a357602081850181015186830182015201612587565b818111156125b5576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611141602083018461257d565b6000806040838503121561260e57600080fd5b823591506020830135612620816124e1565b809150509250929050565b60006020828403121561263d57600080fd5b8135611141816124e1565b6fffffffffffffffffffffffffffffffff8116811461086857600080fd5b6000806040838503121561267957600080fd5b82359150602083013561262081612648565b60006020828403121561269d57600080fd5b8151611141816124e1565b6000602082840312156126ba57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612702576127026126c1565b500390565b6000821982111561271a5761271a6126c1565b500190565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561274e5761274e6126c1565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806127a9576127a9612757565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff838116908316818110156127de576127de6126c1565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006080828403121561285657600080fd5b6040516080810181811067ffffffffffffffff821117156128a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516128ae816124e1565b81526020838101519082015260408301516128c881612648565b604082015260608301516128db81612648565b60608201529392505050565b6000826128f6576128f6612757565b500690565b6001600160a01b038416815267ffffffffffffffff8316602082015260606040820152600061292d606083018461257d565b9594505050505056fea164736f6c634300080f000a" - +var ValidatorPoolDeployedBin = "0x6080604052600436106101b65760003560e01c806370a08231116100ec578063ad36d6cc1161008a578063d38dc7ee11610064578063d38dc7ee146105d7578063d8fe7642146105f7578063dd215c5d14610647578063facd743b1461066757600080fd5b8063ad36d6cc1461054b578063b7d636a51461059b578063d0e30db0146105cf57600080fd5b80638f09ade4116100c65780638f09ade4146104b2578063946765fd146104d2578063a51c9ace14610506578063ab91f1901461051b57600080fd5b806370a08231146104315780638129fc1c1461046757806382dae3aa1461047c57600080fd5b806339111af81161015957806354fd4d501161013357806354fd4d50146103725780635a544742146103c85780635df6a6bc146103e85780636641ea08146103fd57600080fd5b806339111af8146102f55780633a549046146103295780633ee4d4a31461033e57600080fd5b8063205c287811610195578063205c28781461025f5780632e1a7d4d1461028157806336086417146102a157806336b83469146102d557600080fd5b80621c2ff6146101bb5780630f43a6771461020c5780630ff754ea1461022b575b600080fd5b3480156101c757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021857600080fd5b506036545b604051908152602001610203565b34801561023757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026b57600080fd5b5061027f61027a3660046124ff565b610687565b005b34801561028d57600080fd5b5061027f61029c36600461252b565b6107ba565b3480156102ad57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e157600080fd5b5061027f6102f0366004612544565b61086b565b34801561030157600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561033557600080fd5b506101ef610adc565b34801561034a57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037e57600080fd5b506103bb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b60405161020391906125f1565b3480156103d457600080fd5b5061027f6103e3366004612604565b610bfa565b3480156103f457600080fd5b5061027f610ea3565b34801561040957600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043d57600080fd5b5061021d61044c366004612634565b6001600160a01b031660009081526033602052604090205490565b34801561047357600080fd5b5061027f610f22565b34801561048857600080fd5b50610491601481565b6040516fffffffffffffffffffffffffffffffff9091168152602001610203565b3480156104be57600080fd5b506104916104cd366004612604565b611099565b3480156104de57600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561051257600080fd5b50610491606481565b34801561052757600080fd5b50610532620186a081565b60405167ffffffffffffffff9091168152602001610203565b34801561055757600080fd5b5061058b61056636600461252b565b7f00000000000000000000000000000000000000000000000000000000000000001090565b6040519015158152602001610203565b3480156105a757600080fd5b506104917f000000000000000000000000000000000000000000000000000000000000000081565b61027f611148565b3480156105e357600080fd5b5061027f6105f236600461266f565b61129a565b34801561060357600080fd5b5061061761061236600461252b565b611573565b6040805182516fffffffffffffffffffffffffffffffff9081168252602093840151169281019290925201610203565b34801561065357600080fd5b5061027f610662366004612604565b611692565b34801561067357600080fd5b5061058b610682366004612634565b6119f8565b61068f611a7e565b6001600160a01b0382166107105760405162461bcd60e51b815260206004820152603260248201527f56616c696461746f72506f6f6c3a2063616e6e6f74207769746864726177207460448201527f6f20746865207a65726f2061646472657373000000000000000000000000000060648201526084015b60405180910390fd5b61071a3382611ad7565b6000610737835a8460405180602001604052806000815250611d29565b9050806107ac5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b506107b660018055565b5050565b6107c2611a7e565b6107cc3382611ad7565b60006107e9335a8460405180602001604052806000815250611d29565b90508061085e5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b5061086860018055565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ed9190612694565b6001600160a01b0316336001600160a01b0316146109735760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff1680610a1b5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055610a7f826fffffffffffffffffffffffffffffffff8316611d49565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610bd55760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7491906126b1565b9050804210610bc4576000610b8982426126f9565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610bc2576001600160a01b039250505090565b505b50506038546001600160a01b031690565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7c9190612694565b6001600160a01b0316336001600160a01b031614610d025760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610dae5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b610dea827f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16611ad7565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610ead611e7d565b9050806108685760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e6400000000000000000000000000000000000000000000006064820152608401610707565b600054610100900460ff1615808015610f425750600054600160ff909116105b80610f5c5750303b158015610f5c575060005460ff166001145b610fce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610707565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561102c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61103461212e565b801561086857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff16806111415760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b9392505050565b6111737f00000000000000000000000000000000000000000000000000000000000000006001612710565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636abcf5636040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f591906126b1565b1061128e5760405162461bcd60e51b815260206004820152604260248201527f56616c696461746f72506f6f6c3a206f6e6c792063616e206465706f7369742060448201527f746f2056616c696461746f72506f6f6c206265666f7265207465726d696e617460648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610707565b6112983334611d49565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113385760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c650000000000000000000000000000000000000000006064820152608401610707565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156113e15760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c726561647920657869737473000000006064820152608401610707565b6113e9611e7d565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561146b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148f9190612694565b90506114cd817f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16611ad7565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a361156d6121ab565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906115dd5750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b61164f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f20657869737400000000000000000000000000000000000000000000000000006064820152608401610707565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117149190612694565b6001600160a01b0316336001600160a01b03161461179a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1610156118465760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806118ee5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b600060646118fd601484612728565b611907919061278f565b9050600061191582846127be565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f00000000000000000000000000000000000000000000000000000000000000009091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b6036546000908103611a0c57506000919050565b6001600160a01b038216611a2257506000919050565b6001600160a01b0382166000818152603760205260409020546036805491929183908110611a5257611a526127ef565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b600260015403611ad05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610707565b6002600155565b6001600160a01b03821660009081526033602052604090205481811015611b655760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e636573000000000000000000000000000000000000000000000000000000006064820152608401610707565b611b6f82826126f9565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1681108015611bb65750611bb6836119f8565b15611d0957603654600090611bcd906001906126f9565b90508015611c85576001600160a01b0384166000908152603760205260408120546036805491929184908110611c0557611c056127ef565b600091825260209091200154603680546001600160a01b039092169250829184908110611c3457611c346127ef565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611caf57611caf61281e565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611d6d908390612710565b90507f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff168110158015611db75750611db5836119f8565b155b15611d09577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611d0957603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f000000000000000000000000000000000000000000000000000000000000000081101561207857600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611f3457506000846fffffffffffffffffffffffffffffffff16115b156120785760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec919061284d565b915061200e8260000151856fffffffffffffffffffffffffffffffff16611d49565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a361206c82612379565b60019485019401611ead565b80156121225760358590556040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639902cdc090602401600060405180830381600087803b1580156120fe57600080fd5b505af1158015612112573d6000803e3d6000fd5b5050505060019550505050505090565b60009550505050505090565b600054610100900460ff16611d435760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610707565b60365480158015906121bf57506000603554115b1561234e5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae557600160355461220491906126f9565b6040518263ffffffff1660e01b815260040161222291815260200190565b608060405180830381865afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612263919061284d565b9050600082826020015143414460014361227d91906126f9565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6122ee91906128f0565b905060368181548110612303576123036127ef565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506108689050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b805160608201516040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f220000000000000000000000000000000000000000000000000000000092612423926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526124b5939291600401612904565b600060405180830381600087803b1580156124cf57600080fd5b505af11580156124e3573d6000803e3d6000fd5b5050505050565b6001600160a01b038116811461086857600080fd5b6000806040838503121561251257600080fd5b823561251d816124ea565b946020939093013593505050565b60006020828403121561253d57600080fd5b5035919050565b60008060006060848603121561255957600080fd5b83359250602084013561256b816124ea565b9150604084013561257b816124ea565b809150509250925092565b6000815180845260005b818110156125ac57602081850181015186830182015201612590565b818111156125be576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006111416020830184612586565b6000806040838503121561261757600080fd5b823591506020830135612629816124ea565b809150509250929050565b60006020828403121561264657600080fd5b8135611141816124ea565b6fffffffffffffffffffffffffffffffff8116811461086857600080fd5b6000806040838503121561268257600080fd5b82359150602083013561262981612651565b6000602082840312156126a657600080fd5b8151611141816124ea565b6000602082840312156126c357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561270b5761270b6126ca565b500390565b60008219821115612723576127236126ca565b500190565b60006fffffffffffffffffffffffffffffffff80831681851681830481118215151615612757576127576126ca565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806127b2576127b2612760565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e7576127e76126ca565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006080828403121561285f57600080fd5b6040516080810181811067ffffffffffffffff821117156128a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516128b7816124ea565b81526020838101519082015260408301516128d181612651565b604082015260608301516128e481612651565b60608201529392505050565b6000826128ff576128ff612760565b500690565b6001600160a01b038416815267ffffffffffffffff831660208201526060604082015260006129366060830184612586565b9594505050505056fea164736f6c634300080f000a" func init() { if err := json.Unmarshal([]byte(ValidatorPoolStorageLayoutJSON), ValidatorPoolStorageLayout); err != nil { diff --git a/packages/contracts/.gas-snapshot b/packages/contracts/.gas-snapshot index e7ee120e1..622d360f1 100644 --- a/packages/contracts/.gas-snapshot +++ b/packages/contracts/.gas-snapshot @@ -5,69 +5,69 @@ AssetManagerTest:test_delegateKgh_succeeds() (gas: 406625) AssetManagerTest:test_delegateKgh_withoutValidatorDelegation_reverts() (gas: 81115) AssetManagerTest:test_delegate_succeeds() (gas: 323607) AssetManagerTest:test_delegate_withoutValidatorDelegation_reverts() (gas: 26507) -AssetManagerTest:test_finalizeClaimValidatorReward_succeeds() (gas: 601522) +AssetManagerTest:test_finalizeClaimValidatorReward_succeeds() (gas: 601692) AssetManagerTest:test_finalizeUndelegateKgh_noReward_succeeds() (gas: 511643) -AssetManagerTest:test_finalizeUndelegateKgh_rewardExists_succeeds() (gas: 735866) +AssetManagerTest:test_finalizeUndelegateKgh_rewardExists_succeeds() (gas: 736036) AssetManagerTest:test_finalizeUndelegateKgh_undelegationPeriodNotElapsed_reverts() (gas: 485775) -AssetManagerTest:test_finalizeUndelegate_succeeds() (gas: 639556) -AssetManagerTest:test_finalizeUndelegate_undelegationPeriodNotElapsed_reverts() (gas: 670574) +AssetManagerTest:test_finalizeUndelegate_succeeds() (gas: 639725) +AssetManagerTest:test_finalizeUndelegate_undelegationPeriodNotElapsed_reverts() (gas: 670786) AssetManagerTest:test_finalizeUndelegate_withNoPendingShares_reverts() (gas: 17896) -AssetManagerTest:test_finalizeUndelegate_zeroRequest_reverts() (gas: 674470) -AssetManagerTest:test_initClaimValidatorReward_succeeds() (gas: 620478) +AssetManagerTest:test_finalizeUndelegate_zeroRequest_reverts() (gas: 674682) +AssetManagerTest:test_initClaimValidatorReward_succeeds() (gas: 620690) AssetManagerTest:test_initUndelegateKghBatch_noShares_reverts() (gas: 19046) -AssetManagerTest:test_initUndelegateKghBatch_succeeds() (gas: 9559272) +AssetManagerTest:test_initUndelegateKghBatch_succeeds() (gas: 9559442) AssetManagerTest:test_initUndelegateKgh_noShares_reverts() (gas: 18044) -AssetManagerTest:test_initUndelegateKgh_succeeds() (gas: 777650) -AssetManagerTest:test_initUndelegate_exactAmount_succeeds() (gas: 725084) -AssetManagerTest:test_initUndelegate_exceedsMaxAmount_reverts() (gas: 500217) +AssetManagerTest:test_initUndelegateKgh_succeeds() (gas: 777862) +AssetManagerTest:test_initUndelegate_exactAmount_succeeds() (gas: 725296) +AssetManagerTest:test_initUndelegate_exceedsMaxAmount_reverts() (gas: 500450) AssetManagerTest:test_initUndelegate_removedFromValidatorTree_succeeds() (gas: 497046) -AssetManagerTest:test_initUndelegate_succeeds() (gas: 666864) -ColosseumTest:test_bisect_cancelChallenge_senderNotChallenger_reverts() (gas: 2926698) -ColosseumTest:test_bisect_cancelChallenge_succeeds() (gas: 2710986) -ColosseumTest:test_bisect_finalizedOutput_reverts() (gas: 462439) -ColosseumTest:test_bisect_ifNotYourTurn_reverts() (gas: 459633) -ColosseumTest:test_bisect_succeeds() (gas: 435742) -ColosseumTest:test_bisect_whenAsserterTimedOut_reverts() (gas: 462055) -ColosseumTest:test_bisect_whenChallengerTimedOut_reverts() (gas: 457964) -ColosseumTest:test_bisect_withBadSegments_reverts() (gas: 483504) +AssetManagerTest:test_initUndelegate_succeeds() (gas: 667076) +ColosseumTest:test_bisect_cancelChallenge_senderNotChallenger_reverts() (gas: 2926874) +ColosseumTest:test_bisect_cancelChallenge_succeeds() (gas: 2711250) +ColosseumTest:test_bisect_finalizedOutput_reverts() (gas: 462505) +ColosseumTest:test_bisect_ifNotYourTurn_reverts() (gas: 459699) +ColosseumTest:test_bisect_succeeds() (gas: 435808) +ColosseumTest:test_bisect_whenAsserterTimedOut_reverts() (gas: 462121) +ColosseumTest:test_bisect_whenChallengerTimedOut_reverts() (gas: 458030) +ColosseumTest:test_bisect_withBadSegments_reverts() (gas: 483570) ColosseumTest:test_cancelChallenge_noChallenge_reverts() (gas: 35433) -ColosseumTest:test_cancelChallenge_outputNotDeleted_reverts() (gas: 444841) -ColosseumTest:test_cancelChallenge_senderNotChallenger_reverts() (gas: 2929613) -ColosseumTest:test_cancelChallenge_succeeds() (gas: 2669157) -ColosseumTest:test_cancelChallenge_whenChallengerTimedOut_reverts() (gas: 2923944) -ColosseumTest:test_challengerNotCloseWhenAsserterTimeout_succeeds() (gas: 453637) -ColosseumTest:test_challengerTimeout_succeeds() (gas: 433821) +ColosseumTest:test_cancelChallenge_outputNotDeleted_reverts() (gas: 444907) +ColosseumTest:test_cancelChallenge_senderNotChallenger_reverts() (gas: 2929789) +ColosseumTest:test_cancelChallenge_succeeds() (gas: 2669368) +ColosseumTest:test_cancelChallenge_whenChallengerTimedOut_reverts() (gas: 2924120) +ColosseumTest:test_challengerNotCloseWhenAsserterTimeout_succeeds() (gas: 453703) +ColosseumTest:test_challengerTimeout_succeeds() (gas: 433944) ColosseumTest:test_constructor() (gas: 22387) -ColosseumTest:test_createChallenge_afterChallengeProven_reverts() (gas: 2444400) -ColosseumTest:test_createChallenge_afterChallengerTimedOut_succeeds() (gas: 714860) +ColosseumTest:test_createChallenge_afterChallengeProven_reverts() (gas: 2444532) +ColosseumTest:test_createChallenge_afterChallengerTimedOut_succeeds() (gas: 715036) ColosseumTest:test_createChallenge_afterCreationPeriod_reverts() (gas: 44903) -ColosseumTest:test_createChallenge_afterDismissed_succeeds() (gas: 2805701) +ColosseumTest:test_createChallenge_afterDismissed_succeeds() (gas: 2805921) ColosseumTest:test_createChallenge_asAsserter_reverts() (gas: 45717) -ColosseumTest:test_createChallenge_existedChallenge_reverts() (gas: 448950) +ColosseumTest:test_createChallenge_existedChallenge_reverts() (gas: 449016) ColosseumTest:test_createChallenge_genesisOutput_reverts() (gas: 21108) ColosseumTest:test_createChallenge_notSubmittedOutput_reverts() (gas: 35847) -ColosseumTest:test_createChallenge_otherChallenger_succeeds() (gas: 858076) -ColosseumTest:test_createChallenge_succeeds() (gas: 438428) -ColosseumTest:test_createChallenge_withBadSegments_reverts() (gas: 107180) +ColosseumTest:test_createChallenge_otherChallenger_succeeds() (gas: 858186) +ColosseumTest:test_createChallenge_succeeds() (gas: 438494) +ColosseumTest:test_createChallenge_withBadSegments_reverts() (gas: 107203) ColosseumTest:test_createChallenge_wrongFork_reverts() (gas: 43400) -ColosseumTest:test_dismissChallenge_finalizedOutput_reverts() (gas: 582937) -ColosseumTest:test_dismissChallenge_notSecurityCouncil_reverts() (gas: 2437964) +ColosseumTest:test_dismissChallenge_finalizedOutput_reverts() (gas: 583003) +ColosseumTest:test_dismissChallenge_notSecurityCouncil_reverts() (gas: 2438096) ColosseumTest:test_dismissChallenge_outputNotDeleted_reverts() (gas: 28953) -ColosseumTest:test_dismissChallenge_succeeds() (gas: 2457116) -ColosseumTest:test_forceDeleteOutput_alreadyDeletedOutput_reverts() (gas: 593567) -ColosseumTest:test_forceDeleteOutput_finalizedOutput_reverts() (gas: 580302) +ColosseumTest:test_dismissChallenge_succeeds() (gas: 2457270) +ColosseumTest:test_forceDeleteOutput_alreadyDeletedOutput_reverts() (gas: 593655) +ColosseumTest:test_forceDeleteOutput_finalizedOutput_reverts() (gas: 580368) ColosseumTest:test_forceDeleteOutput_notSecurityCouncil_reverts() (gas: 15807) -ColosseumTest:test_forceDeleteOutput_succeeds() (gas: 587260) +ColosseumTest:test_forceDeleteOutput_succeeds() (gas: 587348) ColosseumTest:test_isInCreationPeriod_succeeds() (gas: 43125) -ColosseumTest:test_proveFault_cancelChallenge_succeeds() (gas: 2884636) -ColosseumTest:test_proveFault_finalizedOutput_reverts() (gas: 653994) -ColosseumTest:test_proveFault_succeeds() (gas: 2433985) -Colosseum_ValidatorSystemUpgrade_Test:test_challengerTimeout_callValidatorManager_succeeds() (gas: 508932) -Colosseum_ValidatorSystemUpgrade_Test:test_createChallenge_callValidatorManager_succeeds() (gas: 430394) -Colosseum_ValidatorSystemUpgrade_Test:test_createChallenge_notSatisfyCondition_reverts() (gas: 91985) -Colosseum_ValidatorSystemUpgrade_Test:test_dismissChallenge_callValidatorManager_succeeds() (gas: 2527565) -Colosseum_ValidatorSystemUpgrade_Test:test_forceDeleteOutput_callValidatorManager_succeeds() (gas: 701564) -Colosseum_ValidatorSystemUpgrade_Test:test_proveFault_callValidatorManager_succeeds() (gas: 2518692) +ColosseumTest:test_proveFault_cancelChallenge_succeeds() (gas: 2884848) +ColosseumTest:test_proveFault_finalizedOutput_reverts() (gas: 654060) +ColosseumTest:test_proveFault_succeeds() (gas: 2434117) +Colosseum_ValidatorSystemUpgrade_Test:test_challengerTimeout_callValidatorManager_succeeds() (gas: 508997) +Colosseum_ValidatorSystemUpgrade_Test:test_createChallenge_callValidatorManager_succeeds() (gas: 430416) +Colosseum_ValidatorSystemUpgrade_Test:test_createChallenge_notSatisfyCondition_reverts() (gas: 92007) +Colosseum_ValidatorSystemUpgrade_Test:test_dismissChallenge_callValidatorManager_succeeds() (gas: 2527646) +Colosseum_ValidatorSystemUpgrade_Test:test_forceDeleteOutput_callValidatorManager_succeeds() (gas: 701623) +Colosseum_ValidatorSystemUpgrade_Test:test_proveFault_callValidatorManager_succeeds() (gas: 2518751) CrossDomainMessenger_BaseGas_Test:test_baseGas_succeeds() (gas: 11763) CrossDomainOwnable2_Test:test_onlyOwner_notMessenger_reverts() (gas: 8496) CrossDomainOwnable2_Test:test_onlyOwner_notOwner2_reverts() (gas: 57515) @@ -103,7 +103,7 @@ GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 4031 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_L2OutputOracle:test_submitL2Output_benchmark() (gas: 157474) +GasBenchMark_L2OutputOracle:test_submitL2Output_benchmark() (gas: 157518) GasPriceOracleBedrock_Test:test_baseFee_succeeds() (gas: 8347) GasPriceOracleBedrock_Test:test_decimals_succeeds() (gas: 6189) GasPriceOracleBedrock_Test:test_gasPrice_succeeds() (gas: 8316) @@ -159,22 +159,22 @@ KromaPortalUpgradeable_Test:test_initialize_cannotInitImpl_reverts() (gas: 11006 KromaPortalUpgradeable_Test:test_initialize_cannotInitProxy_reverts() (gas: 15930) KromaPortalUpgradeable_Test:test_params_initValuesOnProxy_succeeds() (gas: 21800) KromaPortalUpgradeable_Test:test_upgradeToAndCall_upgrading_succeeds() (gas: 180688) -KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifOutputRootChanges_reverts() (gas: 300789) -KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifOutputTimestampIsNotFinalized_reverts() (gas: 304270) +KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifOutputRootChanges_reverts() (gas: 300767) +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: 293810) -KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onInsufficientGas_reverts() (gas: 291425) -KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onRecentWithdrawal_reverts() (gas: 274576) -KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReentrancy_reverts() (gas: 329453) -KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReplay_reverts() (gas: 340635) +KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifWithdrawalProofNotOldEnough_reverts() (gas: 293788) +KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onInsufficientGas_reverts() (gas: 291403) +KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onRecentWithdrawal_reverts() (gas: 274554) +KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReentrancy_reverts() (gas: 329431) +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: 329701) +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_paused_reverts() (gas: 87066) -KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProveChangedOutputRootAndOutputIndex_succeeds() (gas: 654376) +KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProveChangedOutputRootAndOutputIndex_succeeds() (gas: 674387) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProveChangedOutputRoot_succeeds() (gas: 449332) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProve_reverts() (gas: 288788) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_validWithdrawalProof_succeeds() (gas: 274702) @@ -189,7 +189,7 @@ KromaPortal_Test:test_depositTransaction_withEthValueAndContractContractCreation KromaPortal_Test:test_depositTransaction_withEthValueAndEOAContractCreation_succeeds() (gas: 75959) KromaPortal_Test:test_depositTransaction_withEthValueFromContract_succeeds() (gas: 83483) KromaPortal_Test:test_depositTransaction_withEthValueFromEOA_succeeds() (gas: 84111) -KromaPortal_Test:test_isOutputFinalized_succeeds() (gas: 196873) +KromaPortal_Test:test_isOutputFinalized_succeeds() (gas: 196918) KromaPortal_Test:test_pause_onlyGuardian_reverts() (gas: 22346) KromaPortal_Test:test_pause_succeeds() (gas: 42343) KromaPortal_Test:test_receive_succeeds() (gas: 127638) @@ -268,39 +268,39 @@ L2ERC721Bridge_Test:test_finalizeBridgeERC721_notFromRemoteMessenger_reverts() ( L2ERC721Bridge_Test:test_finalizeBridgeERC721_notViaLocalMessenger_reverts() (gas: 16146) L2ERC721Bridge_Test:test_finalizeBridgeERC721_selfToken_reverts() (gas: 17731) L2ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 167435) -L2OutputOracleTest:test_computeL2Timestamp_succeeds() (gas: 38297) -L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 75703) -L2OutputOracleTest:test_constructor_l2BlockTimeZero_reverts() (gas: 50635) -L2OutputOracleTest:test_constructor_submissionInterval_reverts() (gas: 50670) -L2OutputOracleTest:test_constructor_succeeds() (gas: 37514) -L2OutputOracleTest:test_getL2OutputIndexAfter_multipleOutputsExist_succeeds() (gas: 507803) -L2OutputOracleTest:test_getL2OutputIndexAfter_noOutputsExist_reverts() (gas: 17983) -L2OutputOracleTest:test_getL2OutputIndexAfter_previousBlock_succeeds() (gas: 168788) -L2OutputOracleTest:test_getL2OutputIndexAfter_sameBlock_succeeds() (gas: 168696) -L2OutputOracleTest:test_getL2Output_succeeds() (gas: 175720) -L2OutputOracleTest:test_latestBlockNumber_succeeds() (gas: 169716) -L2OutputOracleTest:test_nextBlockNumber_succeeds() (gas: 187194) -L2OutputOracleTest:test_nextOutputMinL2Timestamp_succeeds() (gas: 20840) -L2OutputOracleTest:test_replaceL2Output_finalized_reverts() (gas: 189517) -L2OutputOracleTest:test_replaceL2Output_ifNotChallenger_reverts() (gas: 19404) -L2OutputOracleTest:test_replaceL2Output_nonExistent_reverts() (gas: 187756) -L2OutputOracleTest:test_replaceL2Output_succeeds() (gas: 439297) -L2OutputOracleTest:test_replaceL2Output_zeroAddress_reverts() (gas: 21845) -L2OutputOracleTest:test_submitL2Output_emptyOutput_reverts() (gas: 39457) -L2OutputOracleTest:test_submitL2Output_futureTimetamp_reverts() (gas: 41606) -L2OutputOracleTest:test_submitL2Output_notValidator_reverts() (gas: 38027) -L2OutputOracleTest:test_submitL2Output_submitAnotherOutput_succeeds() (gas: 178908) -L2OutputOracleTest:test_submitL2Output_unexpectedBlockNumber_reverts() (gas: 40629) -L2OutputOracleTest:test_submitL2Output_unmatchedBlockhash_reverts() (gas: 42231) -L2OutputOracleTest:test_submitL2Output_wrongFork_reverts() (gas: 41792) -L2OutputOracleTest:test_submitWithBlockhashAndHeight_succeeds() (gas: 168058) -L2OutputOracleUpgradeable_Test:test_initValuesOnProxy_succeeds() (gas: 36929) -L2OutputOracleUpgradeable_Test:test_initializeImpl_alreadyInitialized_reverts() (gas: 15167) -L2OutputOracleUpgradeable_Test:test_initializeProxy_alreadyInitialized_reverts() (gas: 20193) +L2OutputOracleTest:test_computeL2Timestamp_succeeds() (gas: 38209) +L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 75696) +L2OutputOracleTest:test_constructor_l2BlockTimeZero_reverts() (gas: 50628) +L2OutputOracleTest:test_constructor_submissionInterval_reverts() (gas: 50663) +L2OutputOracleTest:test_constructor_succeeds() (gas: 37604) +L2OutputOracleTest:test_getL2OutputIndexAfter_multipleOutputsExist_succeeds() (gas: 508005) +L2OutputOracleTest:test_getL2OutputIndexAfter_noOutputsExist_reverts() (gas: 17961) +L2OutputOracleTest:test_getL2OutputIndexAfter_previousBlock_succeeds() (gas: 168833) +L2OutputOracleTest:test_getL2OutputIndexAfter_sameBlock_succeeds() (gas: 168741) +L2OutputOracleTest:test_getL2Output_succeeds() (gas: 175765) +L2OutputOracleTest:test_latestBlockNumber_succeeds() (gas: 169828) +L2OutputOracleTest:test_nextBlockNumber_succeeds() (gas: 187531) +L2OutputOracleTest:test_nextOutputMinL2Timestamp_succeeds() (gas: 20841) +L2OutputOracleTest:test_replaceL2Output_finalized_reverts() (gas: 189652) +L2OutputOracleTest:test_replaceL2Output_ifNotChallenger_reverts() (gas: 19427) +L2OutputOracleTest:test_replaceL2Output_nonExistent_reverts() (gas: 187958) +L2OutputOracleTest:test_replaceL2Output_succeeds() (gas: 439790) +L2OutputOracleTest:test_replaceL2Output_zeroAddress_reverts() (gas: 21868) +L2OutputOracleTest:test_submitL2Output_emptyOutput_reverts() (gas: 39524) +L2OutputOracleTest:test_submitL2Output_futureTimetamp_reverts() (gas: 41673) +L2OutputOracleTest:test_submitL2Output_notValidator_reverts() (gas: 38094) +L2OutputOracleTest:test_submitL2Output_submitAnotherOutput_succeeds() (gas: 179087) +L2OutputOracleTest:test_submitL2Output_unexpectedBlockNumber_reverts() (gas: 40696) +L2OutputOracleTest:test_submitL2Output_unmatchedBlockhash_reverts() (gas: 42298) +L2OutputOracleTest:test_submitL2Output_wrongFork_reverts() (gas: 41859) +L2OutputOracleTest:test_submitWithBlockhashAndHeight_succeeds() (gas: 168125) +L2OutputOracleUpgradeable_Test:test_initValuesOnProxy_succeeds() (gas: 36974) +L2OutputOracleUpgradeable_Test:test_initializeImpl_alreadyInitialized_reverts() (gas: 15145) +L2OutputOracleUpgradeable_Test:test_initializeProxy_alreadyInitialized_reverts() (gas: 20171) L2OutputOracleUpgradeable_Test:test_upgrading_succeeds() (gas: 180651) -L2OutputOracle_ValidatorSystemUpgrade_Test:test_setLatestFinalizedOutputIndex_succeeds() (gas: 396151) -L2OutputOracle_ValidatorSystemUpgrade_Test:test_setLatestFinalizedOutputIndex_wrongCaller_reverts() (gas: 403849) -L2OutputOracle_ValidatorSystemUpgrade_Test:test_submitL2Output_upgradeValidatorSystem_succeeds() (gas: 399106) +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: 382217) L2StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 380880) L2StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 376964) L2StandardBridge_Bridge_Test:test_finalizeBridgeERC20_succeeds() (gas: 83250) @@ -406,31 +406,31 @@ UpgradeGovernorTest:test_voteProposal_overPeriod_reverts() (gas: 152674) UpgradeGovernorTest:test_voteProposal_succeeds() (gas: 198054) ValidatorManagerTest:test_activateValidator_alreadyActivated_reverts() (gas: 270953) ValidatorManagerTest:test_activateValidator_exited_reverts() (gas: 328932) -ValidatorManagerTest:test_activateValidator_inJail_reverts() (gas: 1043227) +ValidatorManagerTest:test_activateValidator_inJail_reverts() (gas: 1043707) ValidatorManagerTest:test_activateValidator_notValidator_reverts() (gas: 19927) ValidatorManagerTest:test_activateValidator_registered_reverts() (gas: 179414) ValidatorManagerTest:test_activateValidator_succeeds() (gas: 360274) ValidatorManagerTest:test_activatedValidatorTotalWeight_succeeds() (gas: 550151) -ValidatorManagerTest:test_afterSubmitL2Output_distributeReward_succeeds() (gas: 7350392) -ValidatorManagerTest:test_afterSubmitL2Output_resetNoSubmissionCount_succeeds() (gas: 751650) +ValidatorManagerTest:test_afterSubmitL2Output_distributeReward_succeeds() (gas: 7350728) +ValidatorManagerTest:test_afterSubmitL2Output_resetNoSubmissionCount_succeeds() (gas: 751984) ValidatorManagerTest:test_afterSubmitL2Output_senderNotL2OO_reverts() (gas: 15889) -ValidatorManagerTest:test_afterSubmitL2Output_tryJail_succeeds() (gas: 926201) -ValidatorManagerTest:test_afterSubmitL2Output_updatePriorityValidator_succeeds() (gas: 914441) +ValidatorManagerTest:test_afterSubmitL2Output_tryJail_succeeds() (gas: 926681) +ValidatorManagerTest:test_afterSubmitL2Output_updatePriorityValidator_succeeds() (gas: 915139) ValidatorManagerTest:test_changeCommissionRate_exited_reverts() (gas: 330947) -ValidatorManagerTest:test_changeCommissionRate_inJail_reverts() (gas: 936405) +ValidatorManagerTest:test_changeCommissionRate_inJail_reverts() (gas: 936885) ValidatorManagerTest:test_changeCommissionRate_largeChangeRate_reverts() (gas: 283303) ValidatorManagerTest:test_changeCommissionRate_largeCommissionRate_reverts() (gas: 279216) ValidatorManagerTest:test_changeCommissionRate_minChangeSecNotElapsed_reverts() (gas: 273612) ValidatorManagerTest:test_changeCommissionRate_sameCommissionRate_reverts() (gas: 281082) ValidatorManagerTest:test_changeCommissionRate_succeeds() (gas: 288987) ValidatorManagerTest:test_changeCommissionRate_twice_succeeds() (gas: 308609) -ValidatorManagerTest:test_checkSubmissionEligibility_inJail_reverts() (gas: 941289) +ValidatorManagerTest:test_checkSubmissionEligibility_inJail_reverts() (gas: 941725) ValidatorManagerTest:test_checkSubmissionEligibility_notSatisfyCondition_reverts() (gas: 22105) -ValidatorManagerTest:test_checkSubmissionEligibility_notSelected_reverts() (gas: 66846) +ValidatorManagerTest:test_checkSubmissionEligibility_notSelected_reverts() (gas: 66758) ValidatorManagerTest:test_checkSubmissionEligibility_priorityRound_succeeds() (gas: 276643) -ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_inJail_reverts() (gas: 944596) -ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_notSatisfyCondition_reverts() (gas: 71211) -ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_succeeds() (gas: 326032) +ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_inJail_reverts() (gas: 944988) +ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_notSatisfyCondition_reverts() (gas: 71123) +ValidatorManagerTest:test_checkSubmissionEligibility_publicRound_succeeds() (gas: 325944) ValidatorManagerTest:test_checkSubmissionEligibility_senderNotL2OO_reverts() (gas: 15606) ValidatorManagerTest:test_constructor_smallMinActivateAmount_reverts() (gas: 61989) ValidatorManagerTest:test_constructor_succeeds() (gas: 41630) @@ -442,48 +442,48 @@ ValidatorManagerTest:test_registerValidator_largeCommissionRate_reverts() (gas: ValidatorManagerTest:test_registerValidator_registered_succeeds() (gas: 190997) ValidatorManagerTest:test_registerValidator_smallAsset_reverts() (gas: 52481) ValidatorManagerTest:test_slash_notColosseum_reverts() (gas: 26415) -ValidatorManagerTest:test_slash_succeeds() (gas: 14485600) -ValidatorManagerTest:test_tryUnjail_force_senderNotColosseum_reverts() (gas: 930039) +ValidatorManagerTest:test_slash_succeeds() (gas: 14485970) +ValidatorManagerTest:test_tryUnjail_force_senderNotColosseum_reverts() (gas: 930519) ValidatorManagerTest:test_tryUnjail_notInJail_reverts() (gas: 18375) -ValidatorManagerTest:test_tryUnjail_periodNotElapsed_reverts() (gas: 929084) -ValidatorManagerTest:test_tryUnjail_senderNotSelf_reverts() (gas: 928891) -ValidatorManagerTest:test_tryUnjail_succeeds() (gas: 918381) -ValidatorPoolTest:test_addPendingBond_insufficientBalances_reverts() (gas: 301332) +ValidatorManagerTest:test_tryUnjail_periodNotElapsed_reverts() (gas: 929564) +ValidatorManagerTest:test_tryUnjail_senderNotSelf_reverts() (gas: 929371) +ValidatorManagerTest:test_tryUnjail_succeeds() (gas: 918861) +ValidatorPoolTest:test_addPendingBond_insufficientBalances_reverts() (gas: 301266) ValidatorPoolTest:test_addPendingBond_noBond_reverts() (gas: 29957) -ValidatorPoolTest:test_addPendingBond_succeeds() (gas: 371272) -ValidatorPoolTest:test_balanceOf_succeeds() (gas: 67904) +ValidatorPoolTest:test_addPendingBond_succeeds() (gas: 371202) +ValidatorPoolTest:test_balanceOf_succeeds() (gas: 67882) ValidatorPoolTest:test_constructor_succeeds() (gas: 29763) -ValidatorPoolTest:test_createBond_existsBond_reverts() (gas: 370783) -ValidatorPoolTest:test_createBond_insufficientBalances_reverts() (gas: 139402) -ValidatorPoolTest:test_createBond_senderNotL2OO_reverts() (gas: 201628) -ValidatorPoolTest:test_createBond_succeeds() (gas: 290453) -ValidatorPoolTest:test_createBond_unbondBefore_succeeds() (gas: 522035) -ValidatorPoolTest:test_deposit_alreadyValidator_succeeds() (gas: 219903) +ValidatorPoolTest:test_createBond_existsBond_reverts() (gas: 370695) +ValidatorPoolTest:test_createBond_insufficientBalances_reverts() (gas: 139314) +ValidatorPoolTest:test_createBond_senderNotL2OO_reverts() (gas: 201584) +ValidatorPoolTest:test_createBond_succeeds() (gas: 290321) +ValidatorPoolTest:test_createBond_unbondBefore_succeeds() (gas: 541737) +ValidatorPoolTest:test_deposit_alreadyValidator_succeeds() (gas: 219837) ValidatorPoolTest:test_deposit_insufficientBalances_reverts() (gas: 19815) -ValidatorPoolTest:test_deposit_succeeds() (gas: 197004) +ValidatorPoolTest:test_deposit_succeeds() (gas: 196960) ValidatorPoolTest:test_getBond_noBond_reverts() (gas: 16932) -ValidatorPoolTest:test_getBond_succeeds() (gas: 294219) +ValidatorPoolTest:test_getBond_succeeds() (gas: 294153) ValidatorPoolTest:test_increaseBond_noBond_reverts() (gas: 30000) -ValidatorPoolTest:test_increaseBond_noPendingBond_reverts() (gas: 300010) -ValidatorPoolTest:test_increaseBond_succeeds() (gas: 409596) -ValidatorPoolTest:test_isValidator_succeeds() (gas: 150881) -ValidatorPoolTest:test_nextValidator_succeeds() (gas: 1570092) +ValidatorPoolTest:test_increaseBond_noPendingBond_reverts() (gas: 299878) +ValidatorPoolTest:test_increaseBond_succeeds() (gas: 409578) +ValidatorPoolTest:test_isValidator_succeeds() (gas: 150837) +ValidatorPoolTest:test_nextValidator_succeeds() (gas: 1568926) ValidatorPoolTest:test_releasePendingBond_noPendingBond_succeeds() (gas: 30148) -ValidatorPoolTest:test_releasePendingBond_succeeds() (gas: 434737) -ValidatorPoolTest:test_securityCouncilCannotBeValidator_succeeds() (gas: 61458) -ValidatorPoolTest:test_unbond_maxUnbond_succeeds() (gas: 512943) -ValidatorPoolTest:test_unbond_multipleBonds_succeeds() (gas: 422348) +ValidatorPoolTest:test_releasePendingBond_succeeds() (gas: 434720) +ValidatorPoolTest:test_securityCouncilCannotBeValidator_succeeds() (gas: 61436) +ValidatorPoolTest:test_unbond_maxUnbond_succeeds() (gas: 512743) +ValidatorPoolTest:test_unbond_multipleBonds_succeeds() (gas: 422331) ValidatorPoolTest:test_unbond_noBond_reverts() (gas: 18128) -ValidatorPoolTest:test_unbond_notExpired_reverts() (gas: 292828) -ValidatorPoolTest:test_unbond_succeeds() (gas: 391738) -ValidatorPoolTest:test_validatorCount_succeeds() (gas: 221363) -ValidatorPoolTest:test_withdraw_all_succeeds() (gas: 176544) -ValidatorPoolTest:test_withdraw_loseValidatorEligibility_succeeds() (gas: 183414) -ValidatorPoolTest:test_withdraw_maintainValidatorEligibility_succeeds() (gas: 129691) -ValidatorPoolTest:test_withdraw_to_succeeds() (gas: 176788) -ValidatorPoolTest:test_withdraw_to_zero_address_reverts() (gas: 209317) -ValidatorPool_SystemUpgrade_Test:test_deposit_afterSystemUpgrade_reverts() (gas: 539658) -ValidatorPool_SystemUpgrade_Test:test_isTerminated_succeeds() (gas: 526795) +ValidatorPoolTest:test_unbond_notExpired_reverts() (gas: 292696) +ValidatorPoolTest:test_unbond_succeeds() (gas: 411709) +ValidatorPoolTest:test_validatorCount_succeeds() (gas: 221297) +ValidatorPoolTest:test_withdraw_all_succeeds() (gas: 176508) +ValidatorPoolTest:test_withdraw_loseValidatorEligibility_succeeds() (gas: 183370) +ValidatorPoolTest:test_withdraw_maintainValidatorEligibility_succeeds() (gas: 129669) +ValidatorPoolTest:test_withdraw_to_succeeds() (gas: 176753) +ValidatorPoolTest:test_withdraw_to_zero_address_reverts() (gas: 209273) +ValidatorPool_SystemUpgrade_Test:test_deposit_afterSystemUpgrade_reverts() (gas: 539174) +ValidatorPool_SystemUpgrade_Test:test_isTerminated_succeeds() (gas: 526333) ValidatorRewardVault_Test:test_balanceOf_succeeds() (gas: 42735) ValidatorRewardVault_Test:test_constructor_succeeds() (gas: 11378) ValidatorRewardVault_Test:test_minWithdrawalAmount_succeeds() (gas: 5498) diff --git a/packages/contracts/.storage-layout b/packages/contracts/.storage-layout index 14ca947d9..366e2d166 100644 --- a/packages/contracts/.storage-layout +++ b/packages/contracts/.storage-layout @@ -98,14 +98,14 @@ ➡ contracts/L1/L2OutputOracle.sol:L2OutputOracle ======================= -| Name | Type | Slot | Offset | Bytes | Contract | -|----------------------------|---------------------------------|------|--------|-------|------------------------------------------------| -| _initialized | uint8 | 0 | 0 | 1 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | -| _initializing | bool | 0 | 1 | 1 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | -| startingBlockNumber | uint256 | 1 | 0 | 32 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | -| startingTimestamp | uint256 | 2 | 0 | 32 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | -| l2Outputs | struct Types.CheckpointOutput[] | 3 | 0 | 32 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | -| latestFinalizedOutputIndex | uint256 | 4 | 0 | 32 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | +| Name | Type | Slot | Offset | Bytes | Contract | +|-------------------------|---------------------------------|------|--------|-------|------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | +| _initializing | bool | 0 | 1 | 1 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | +| startingBlockNumber | uint256 | 1 | 0 | 32 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | +| startingTimestamp | uint256 | 2 | 0 | 32 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | +| l2Outputs | struct Types.CheckpointOutput[] | 3 | 0 | 32 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | +| nextFinalizeOutputIndex | uint256 | 4 | 0 | 32 | contracts/L1/L2OutputOracle.sol:L2OutputOracle | ======================= ➡ contracts/L1/KromaPortal.sol:KromaPortal diff --git a/packages/contracts/contracts/L1/L2OutputOracle.sol b/packages/contracts/contracts/L1/L2OutputOracle.sol index 24ad54026..30cf966ad 100644 --- a/packages/contracts/contracts/L1/L2OutputOracle.sol +++ b/packages/contracts/contracts/L1/L2OutputOracle.sol @@ -65,9 +65,9 @@ contract L2OutputOracle is Initializable, ISemver { Types.CheckpointOutput[] internal l2Outputs; /** - * @notice The output index of the latest finalized output. + * @notice The output index of the next finalization target output. */ - uint256 public latestFinalizedOutputIndex; + uint256 public nextFinalizeOutputIndex; /** * @notice Emitted when an output is submitted. @@ -279,26 +279,26 @@ contract L2OutputOracle is Initializable, ISemver { } /** - * @notice Updates the latest finalized output index. This function may only be called by the - * validator pool contract before terminated, after that by the validator manager + * @notice Updates the next output index to be finalized. This function may only be called by + * the validator pool contract before terminated, after that by the validator manager * contract. * - * @param _outputIndex Index of the latest finalized output. + * @param _outputIndex Index of the next output to be finalized. */ - function setLatestFinalizedOutputIndex(uint256 _outputIndex) external { - if (VALIDATOR_POOL.isTerminated(_outputIndex)) { + function setNextFinalizeOutputIndex(uint256 _outputIndex) external { + if (VALIDATOR_POOL.isTerminated(_outputIndex - 1)) { require( msg.sender == address(VALIDATOR_MANAGER), - "L2OutputOracle: only the validator manager contract can set latest finalized output index" + "L2OutputOracle: only the validator manager contract can set next finalize output index" ); } else { require( msg.sender == address(VALIDATOR_POOL), - "L2OutputOracle: only the validator pool contract can set latest finalized output index" + "L2OutputOracle: only the validator pool contract can set next finalize output index" ); } - latestFinalizedOutputIndex = _outputIndex; + nextFinalizeOutputIndex = _outputIndex; } /** diff --git a/packages/contracts/contracts/L1/ValidatorManager.sol b/packages/contracts/contracts/L1/ValidatorManager.sol index 72f2c595b..a6b4e330f 100644 --- a/packages/contracts/contracts/L1/ValidatorManager.sol +++ b/packages/contracts/contracts/L1/ValidatorManager.sol @@ -233,7 +233,9 @@ contract ValidatorManager is ISemver, IValidatorManager { } // Select the next priority validator. - _updatePriorityValidator(); + unchecked { + _updatePriorityValidator(); + } } /** @@ -302,7 +304,7 @@ contract ValidatorManager is ISemver, IValidatorManager { _sendToJail(loser); - if (L2_ORACLE.latestFinalizedOutputIndex() < outputIndex) { + if (L2_ORACLE.nextFinalizeOutputIndex() <= outputIndex) { // If output is not rewarded yet, add slashing asset to the pending challenge reward. unchecked { _pendingChallengeReward[outputIndex] += challengeReward; @@ -490,7 +492,7 @@ contract ValidatorManager is ISemver, IValidatorManager { * @return Whether the reward distribution is done at least once or not. */ function _distributeReward() private returns (bool) { - uint256 outputIndex = L2_ORACLE.latestFinalizedOutputIndex() + 1; + uint256 outputIndex = L2_ORACLE.nextFinalizeOutputIndex(); uint256 latestOutputIndex = L2_ORACLE.latestOutputIndex(); if (!L2_ORACLE.VALIDATOR_POOL().isTerminated(outputIndex)) { @@ -539,7 +541,7 @@ contract ValidatorManager is ISemver, IValidatorManager { } if (finalizedOutputNum > 0) { - L2_ORACLE.setLatestFinalizedOutputIndex(outputIndex - 1); + L2_ORACLE.setNextFinalizeOutputIndex(outputIndex); return true; } @@ -600,11 +602,11 @@ contract ValidatorManager is ISemver, IValidatorManager { */ function _updatePriorityValidator() private { uint120 weightSum = activatedValidatorTotalWeight(); + uint256 nextFinalizeOutputIndex = L2_ORACLE.nextFinalizeOutputIndex(); - if (weightSum > 0) { - uint256 latestFinalizedOutputIndex = L2_ORACLE.latestFinalizedOutputIndex(); + if (weightSum > 0 && nextFinalizeOutputIndex > 0) { Types.CheckpointOutput memory output = L2_ORACLE.getL2Output( - latestFinalizedOutputIndex + nextFinalizeOutputIndex - 1 ); uint120 weight = uint120( diff --git a/packages/contracts/contracts/L1/ValidatorPool.sol b/packages/contracts/contracts/L1/ValidatorPool.sol index e8a957c43..398d00680 100644 --- a/packages/contracts/contracts/L1/ValidatorPool.sol +++ b/packages/contracts/contracts/L1/ValidatorPool.sol @@ -416,8 +416,8 @@ contract ValidatorPool is ReentrancyGuardUpgradeable, ISemver { nextUnbondOutputIndex = outputIndex; } - // Set the latest finalized output index in L2OutputOracle. - L2_ORACLE.setLatestFinalizedOutputIndex(outputIndex - 1); + // Set the next output index to be finalized in L2OutputOracle. + L2_ORACLE.setNextFinalizeOutputIndex(outputIndex); return true; } diff --git a/packages/contracts/contracts/test/AssetManager.t.sol b/packages/contracts/contracts/test/AssetManager.t.sol index 16bbcbc18..43869ca4c 100644 --- a/packages/contracts/contracts/test/AssetManager.t.sol +++ b/packages/contracts/contracts/test/AssetManager.t.sol @@ -154,12 +154,12 @@ contract AssetManagerTest is ValidatorSystemUpgrade_Initializer { // KRO bridged from L2 Validator Reward Vault kro.transfer(address(assetManager), 1e22); - // Submit until terminateOutputIndex and set it latest finalized output + // Submit until terminateOutputIndex and set next output index to be finalized after it for (uint256 i = mockOracle.nextOutputIndex(); i <= terminateOutputIndex; i++) { _submitOutputRoot(pool.nextValidator()); } vm.warp(mockOracle.finalizedAt(terminateOutputIndex)); - mockOracle.mockSetLatestFinalizedOutputIndex(terminateOutputIndex); + mockOracle.mockSetNextFinalizeOutputIndex(terminateOutputIndex + 1); } function _submitOutputRoot(address _validator) internal { diff --git a/packages/contracts/contracts/test/L2OutputOracle.t.sol b/packages/contracts/contracts/test/L2OutputOracle.t.sol index 94364bc63..97e72a85e 100644 --- a/packages/contracts/contracts/test/L2OutputOracle.t.sol +++ b/packages/contracts/contracts/test/L2OutputOracle.t.sol @@ -482,50 +482,36 @@ contract L2OutputOracle_ValidatorSystemUpgrade_Test is ValidatorSystemUpgrade_In oracle.submitL2Output(outputRoot, nextBlockNumber, 0, 0); } - function test_setLatestFinalizedOutputIndex_succeeds() external { + function test_setNextFinalizeOutputIndex_succeeds() external { // Only ValidatorPool can set finalized output before upgrade - uint256 outputIndex = oracle.latestOutputIndex(); vm.prank(address(pool)); - oracle.setLatestFinalizedOutputIndex(outputIndex); + oracle.setNextFinalizeOutputIndex(1); + assertEq(oracle.nextFinalizeOutputIndex(), 1); - assertEq(oracle.latestFinalizedOutputIndex(), outputIndex); - - // Submit more outputs to progress after upgrade - for (uint256 i = oracle.nextOutputIndex(); i <= terminateOutputIndex + 1; i++) { - _submitL2OutputV1(); - } + vm.prank(address(pool)); + oracle.setNextFinalizeOutputIndex(terminateOutputIndex + 1); + assertEq(oracle.nextFinalizeOutputIndex(), terminateOutputIndex + 1); // Now only ValidatorManager can set finalized output after upgrade - vm.warp(block.timestamp + oracle.FINALIZATION_PERIOD_SECONDS()); - outputIndex = oracle.latestOutputIndex(); vm.prank(address(valMgr)); - oracle.setLatestFinalizedOutputIndex(outputIndex); - - assertEq(oracle.latestFinalizedOutputIndex(), outputIndex); + oracle.setNextFinalizeOutputIndex(terminateOutputIndex + 2); + assertEq(oracle.nextFinalizeOutputIndex(), terminateOutputIndex + 2); } - function test_setLatestFinalizedOutputIndex_wrongCaller_reverts() external { + function test_setNextFinalizeOutputIndex_wrongCaller_reverts() external { // Only ValidatorPool can set finalized output before upgrade - uint256 outputIndex = oracle.latestOutputIndex(); vm.prank(address(valMgr)); vm.expectRevert( - "L2OutputOracle: only the validator pool contract can set latest finalized output index" + "L2OutputOracle: only the validator pool contract can set next finalize output index" ); - oracle.setLatestFinalizedOutputIndex(outputIndex); - - // Submit more outputs to progress after upgrade - for (uint256 i = oracle.nextOutputIndex(); i <= terminateOutputIndex + 1; i++) { - _submitL2OutputV1(); - } + oracle.setNextFinalizeOutputIndex(1); // Now only ValidatorManager can set finalized output after upgrade - vm.warp(block.timestamp + oracle.FINALIZATION_PERIOD_SECONDS()); - outputIndex = oracle.latestOutputIndex(); vm.prank(address(pool)); vm.expectRevert( - "L2OutputOracle: only the validator manager contract can set latest finalized output index" + "L2OutputOracle: only the validator manager contract can set next finalize output index" ); - oracle.setLatestFinalizedOutputIndex(outputIndex); + oracle.setNextFinalizeOutputIndex(terminateOutputIndex + 2); } } diff --git a/packages/contracts/contracts/test/ValidatorManager.t.sol b/packages/contracts/contracts/test/ValidatorManager.t.sol index 3be25bf6f..5a6474849 100644 --- a/packages/contracts/contracts/test/ValidatorManager.t.sol +++ b/packages/contracts/contracts/test/ValidatorManager.t.sol @@ -49,8 +49,8 @@ contract MockL2OutputOracle is L2OutputOracle { l2Outputs[outputIndex].outputRoot = bytes32(0); } - function mockSetLatestFinalizedOutputIndex(uint256 l2OutputIndex) external { - latestFinalizedOutputIndex = l2OutputIndex; + function mockSetNextFinalizeOutputIndex(uint256 l2OutputIndex) external { + nextFinalizeOutputIndex = l2OutputIndex; } } @@ -144,14 +144,14 @@ contract ValidatorManagerTest is ValidatorSystemUpgrade_Initializer { VKRO_PER_KGH = assetMan.VKRO_PER_KGH(); - // Submit until terminateOutputIndex and set it latest finalized output + // Submit until terminateOutputIndex and set next output index to be finalized after it vm.prank(trusted); pool.deposit{ value: trusted.balance }(); for (uint256 i = oracle.nextOutputIndex(); i <= terminateOutputIndex; i++) { _submitL2OutputV1(); } vm.warp(oracle.finalizedAt(terminateOutputIndex)); - mockOracle.mockSetLatestFinalizedOutputIndex(terminateOutputIndex); + mockOracle.mockSetNextFinalizeOutputIndex(terminateOutputIndex + 1); } function test_constructor_succeeds() external { @@ -388,7 +388,7 @@ contract ValidatorManagerTest is ValidatorSystemUpgrade_Initializer { validatorReward ); - assertEq(oracle.latestFinalizedOutputIndex(), terminateOutputIndex + 1); + assertEq(oracle.nextFinalizeOutputIndex(), terminateOutputIndex + 2); } function test_afterSubmitL2Output_updatePriorityValidator_succeeds() external { @@ -403,8 +403,8 @@ contract ValidatorManagerTest is ValidatorSystemUpgrade_Initializer { // Submit the first output which interacts with ValidatorManager _submitL2OutputV2(false); - // Check if lastest finalized output is not updated - assertEq(oracle.latestFinalizedOutputIndex(), terminateOutputIndex); + // Check if next finalize output is not updated + assertEq(oracle.nextFinalizeOutputIndex(), terminateOutputIndex + 1); // Check if next priority validator is set in ValidatorManager address nextValidator = mockValMgr.nextPriorityValidator(); assertTrue(nextValidator != address(0)); @@ -416,8 +416,8 @@ contract ValidatorManagerTest is ValidatorSystemUpgrade_Initializer { _submitL2OutputV2(true); vm.stopPrank(); - // Check if lastest finalized output is updated - assertEq(oracle.latestFinalizedOutputIndex(), terminateOutputIndex + 1); + // Check if next finalize output is updated + assertEq(oracle.nextFinalizeOutputIndex(), terminateOutputIndex + 2); // Submit 10 outputs uint256 tries = 10; diff --git a/packages/contracts/contracts/test/ValidatorPool.t.sol b/packages/contracts/contracts/test/ValidatorPool.t.sol index f83742fc2..9a3123d27 100644 --- a/packages/contracts/contracts/test/ValidatorPool.t.sol +++ b/packages/contracts/contracts/test/ValidatorPool.t.sol @@ -311,7 +311,7 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { emit Unbonded(0, firstOutput.submitter, uint128(firstBond.amount)); vm.expectCall( address(oracle), - abi.encodeWithSelector(L2OutputOracle.setLatestFinalizedOutputIndex.selector, 0) + abi.encodeWithSelector(L2OutputOracle.setNextFinalizeOutputIndex.selector, 1) ); pool.createBond(nextOutputIndex, expiresAt); assertEq(pool.balanceOf(firstOutput.submitter), requiredBondAmount); @@ -391,8 +391,8 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { vm.expectCall( address(oracle), abi.encodeWithSelector( - L2OutputOracle.setLatestFinalizedOutputIndex.selector, - outputIndex + L2OutputOracle.setNextFinalizeOutputIndex.selector, + outputIndex + 1 ) ); vm.prank(trusted); @@ -465,8 +465,8 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { vm.expectCall( address(oracle), abi.encodeWithSelector( - L2OutputOracle.setLatestFinalizedOutputIndex.selector, - secondOutputIndex + L2OutputOracle.setNextFinalizeOutputIndex.selector, + secondOutputIndex + 1 ) ); vm.prank(trusted); @@ -518,8 +518,8 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { bond = pool.getBond(tries - 1); assertEq(bond.amount, requiredBondAmount); - // check if latest finalized output index is set correctly - assertEq(oracle.latestFinalizedOutputIndex(), outputIndex - 1); + // check if next finalize output index is set correctly + assertEq(oracle.nextFinalizeOutputIndex(), outputIndex); } function test_unbond_notExpired_reverts() external {