From cd96e3dc045bc72b6460d2b19c4effdb0d35e532 Mon Sep 17 00:00:00 2001 From: RnkSngh Date: Fri, 22 Nov 2024 14:46:00 -0800 Subject: [PATCH] update bindings --- bindings/go/ilightclient/IClientUpdates.go | 233 ++++++++++++++++++ .../go/ilightclient/IMembershipVerifier.go | 222 +++++++++++++++++ .../go/ilightclient/INonMembershipVerifier.go | 222 +++++++++++++++++ package-lock.json | 4 +- package.json | 2 +- .../ILightClient.sol/IClientUpdates.ts | 114 +++++++++ .../{ => ILightClient.sol}/ILightClient.ts | 2 +- .../ILightClient.sol/IMembershipVerifier.ts | 135 ++++++++++ .../INonMembershipVerifier.ts | 135 ++++++++++ src/evm/contracts/ILightClient.sol/index.ts | 7 + .../factories/Dispatcher__factory.ts | 2 +- .../factories/DummyLightClient__factory.ts | 2 +- .../IClientUpdates__factory.ts | 61 +++++ .../ILightClient__factory.ts | 5 +- .../IMembershipVerifier__factory.ts | 98 ++++++++ .../INonMembershipVerifier__factory.ts | 93 +++++++ .../factories/ILightClient.sol/index.ts | 7 + .../OptimisticLightClient__factory.ts | 2 +- .../OptimisticProofVerifier__factory.ts | 2 +- .../SequencerSignatureVerifier__factory.ts | 2 +- .../factories/SequencerSoloClient__factory.ts | 2 +- src/evm/contracts/factories/index.ts | 2 +- src/evm/contracts/index.ts | 12 +- 23 files changed, 1352 insertions(+), 14 deletions(-) create mode 100644 bindings/go/ilightclient/IClientUpdates.go create mode 100644 bindings/go/ilightclient/IMembershipVerifier.go create mode 100644 bindings/go/ilightclient/INonMembershipVerifier.go create mode 100644 src/evm/contracts/ILightClient.sol/IClientUpdates.ts rename src/evm/contracts/{ => ILightClient.sol}/ILightClient.ts (99%) create mode 100644 src/evm/contracts/ILightClient.sol/IMembershipVerifier.ts create mode 100644 src/evm/contracts/ILightClient.sol/INonMembershipVerifier.ts create mode 100644 src/evm/contracts/ILightClient.sol/index.ts create mode 100644 src/evm/contracts/factories/ILightClient.sol/IClientUpdates__factory.ts rename src/evm/contracts/factories/{ => ILightClient.sol}/ILightClient__factory.ts (97%) create mode 100644 src/evm/contracts/factories/ILightClient.sol/IMembershipVerifier__factory.ts create mode 100644 src/evm/contracts/factories/ILightClient.sol/INonMembershipVerifier__factory.ts create mode 100644 src/evm/contracts/factories/ILightClient.sol/index.ts diff --git a/bindings/go/ilightclient/IClientUpdates.go b/bindings/go/ilightclient/IClientUpdates.go new file mode 100644 index 00000000..6eda62b1 --- /dev/null +++ b/bindings/go/ilightclient/IClientUpdates.go @@ -0,0 +1,233 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ilightclient + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IClientUpdatesMetaData contains all meta data concerning the IClientUpdates contract. +var IClientUpdatesMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"LIGHT_CLIENT_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLightClientType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// IClientUpdatesABI is the input ABI used to generate the binding from. +// Deprecated: Use IClientUpdatesMetaData.ABI instead. +var IClientUpdatesABI = IClientUpdatesMetaData.ABI + +// IClientUpdates is an auto generated Go binding around an Ethereum contract. +type IClientUpdates struct { + IClientUpdatesCaller // Read-only binding to the contract + IClientUpdatesTransactor // Write-only binding to the contract + IClientUpdatesFilterer // Log filterer for contract events +} + +// IClientUpdatesCaller is an auto generated read-only Go binding around an Ethereum contract. +type IClientUpdatesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IClientUpdatesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IClientUpdatesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IClientUpdatesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IClientUpdatesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IClientUpdatesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IClientUpdatesSession struct { + Contract *IClientUpdates // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IClientUpdatesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IClientUpdatesCallerSession struct { + Contract *IClientUpdatesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IClientUpdatesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IClientUpdatesTransactorSession struct { + Contract *IClientUpdatesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IClientUpdatesRaw is an auto generated low-level Go binding around an Ethereum contract. +type IClientUpdatesRaw struct { + Contract *IClientUpdates // Generic contract binding to access the raw methods on +} + +// IClientUpdatesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IClientUpdatesCallerRaw struct { + Contract *IClientUpdatesCaller // Generic read-only contract binding to access the raw methods on +} + +// IClientUpdatesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IClientUpdatesTransactorRaw struct { + Contract *IClientUpdatesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIClientUpdates creates a new instance of IClientUpdates, bound to a specific deployed contract. +func NewIClientUpdates(address common.Address, backend bind.ContractBackend) (*IClientUpdates, error) { + contract, err := bindIClientUpdates(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IClientUpdates{IClientUpdatesCaller: IClientUpdatesCaller{contract: contract}, IClientUpdatesTransactor: IClientUpdatesTransactor{contract: contract}, IClientUpdatesFilterer: IClientUpdatesFilterer{contract: contract}}, nil +} + +// NewIClientUpdatesCaller creates a new read-only instance of IClientUpdates, bound to a specific deployed contract. +func NewIClientUpdatesCaller(address common.Address, caller bind.ContractCaller) (*IClientUpdatesCaller, error) { + contract, err := bindIClientUpdates(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IClientUpdatesCaller{contract: contract}, nil +} + +// NewIClientUpdatesTransactor creates a new write-only instance of IClientUpdates, bound to a specific deployed contract. +func NewIClientUpdatesTransactor(address common.Address, transactor bind.ContractTransactor) (*IClientUpdatesTransactor, error) { + contract, err := bindIClientUpdates(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IClientUpdatesTransactor{contract: contract}, nil +} + +// NewIClientUpdatesFilterer creates a new log filterer instance of IClientUpdates, bound to a specific deployed contract. +func NewIClientUpdatesFilterer(address common.Address, filterer bind.ContractFilterer) (*IClientUpdatesFilterer, error) { + contract, err := bindIClientUpdates(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IClientUpdatesFilterer{contract: contract}, nil +} + +// bindIClientUpdates binds a generic wrapper to an already deployed contract. +func bindIClientUpdates(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IClientUpdatesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IClientUpdates *IClientUpdatesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IClientUpdates.Contract.IClientUpdatesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IClientUpdates *IClientUpdatesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IClientUpdates.Contract.IClientUpdatesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IClientUpdates *IClientUpdatesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IClientUpdates.Contract.IClientUpdatesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IClientUpdates *IClientUpdatesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IClientUpdates.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IClientUpdates *IClientUpdatesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IClientUpdates.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IClientUpdates *IClientUpdatesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IClientUpdates.Contract.contract.Transact(opts, method, params...) +} + +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_IClientUpdates *IClientUpdatesCaller) LIGHTCLIENTTYPE(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IClientUpdates.contract.Call(opts, &out, "LIGHT_CLIENT_TYPE") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_IClientUpdates *IClientUpdatesSession) LIGHTCLIENTTYPE() (uint8, error) { + return _IClientUpdates.Contract.LIGHTCLIENTTYPE(&_IClientUpdates.CallOpts) +} + +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_IClientUpdates *IClientUpdatesCallerSession) LIGHTCLIENTTYPE() (uint8, error) { + return _IClientUpdates.Contract.LIGHTCLIENTTYPE(&_IClientUpdates.CallOpts) +} + +// UpdateClient is a paid mutator transaction binding the contract method 0x49ff245e. +// +// Solidity: function updateClient(bytes proof, uint256 height, uint256 appHash) returns() +func (_IClientUpdates *IClientUpdatesTransactor) UpdateClient(opts *bind.TransactOpts, proof []byte, height *big.Int, appHash *big.Int) (*types.Transaction, error) { + return _IClientUpdates.contract.Transact(opts, "updateClient", proof, height, appHash) +} + +// UpdateClient is a paid mutator transaction binding the contract method 0x49ff245e. +// +// Solidity: function updateClient(bytes proof, uint256 height, uint256 appHash) returns() +func (_IClientUpdates *IClientUpdatesSession) UpdateClient(proof []byte, height *big.Int, appHash *big.Int) (*types.Transaction, error) { + return _IClientUpdates.Contract.UpdateClient(&_IClientUpdates.TransactOpts, proof, height, appHash) +} + +// UpdateClient is a paid mutator transaction binding the contract method 0x49ff245e. +// +// Solidity: function updateClient(bytes proof, uint256 height, uint256 appHash) returns() +func (_IClientUpdates *IClientUpdatesTransactorSession) UpdateClient(proof []byte, height *big.Int, appHash *big.Int) (*types.Transaction, error) { + return _IClientUpdates.Contract.UpdateClient(&_IClientUpdates.TransactOpts, proof, height, appHash) +} diff --git a/bindings/go/ilightclient/IMembershipVerifier.go b/bindings/go/ilightclient/IMembershipVerifier.go new file mode 100644 index 00000000..0e0339b6 --- /dev/null +++ b/bindings/go/ilightclient/IMembershipVerifier.go @@ -0,0 +1,222 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ilightclient + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// Ics23Proof is an auto generated low-level Go binding around an user-defined struct. +type Ics23Proof struct { + Proof []OpIcs23Proof + Height *big.Int +} + +// OpIcs23Proof is an auto generated low-level Go binding around an user-defined struct. +type OpIcs23Proof struct { + Path []OpIcs23ProofPath + Key []byte + Value []byte + Prefix []byte +} + +// OpIcs23ProofPath is an auto generated low-level Go binding around an user-defined struct. +type OpIcs23ProofPath struct { + Prefix []byte + Suffix []byte +} + +// IMembershipVerifierMetaData contains all meta data concerning the IMembershipVerifier contract. +var IMembershipVerifierMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"verifyMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expectedValue\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// IMembershipVerifierABI is the input ABI used to generate the binding from. +// Deprecated: Use IMembershipVerifierMetaData.ABI instead. +var IMembershipVerifierABI = IMembershipVerifierMetaData.ABI + +// IMembershipVerifier is an auto generated Go binding around an Ethereum contract. +type IMembershipVerifier struct { + IMembershipVerifierCaller // Read-only binding to the contract + IMembershipVerifierTransactor // Write-only binding to the contract + IMembershipVerifierFilterer // Log filterer for contract events +} + +// IMembershipVerifierCaller is an auto generated read-only Go binding around an Ethereum contract. +type IMembershipVerifierCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IMembershipVerifierTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IMembershipVerifierTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IMembershipVerifierFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IMembershipVerifierFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IMembershipVerifierSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IMembershipVerifierSession struct { + Contract *IMembershipVerifier // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IMembershipVerifierCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IMembershipVerifierCallerSession struct { + Contract *IMembershipVerifierCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IMembershipVerifierTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IMembershipVerifierTransactorSession struct { + Contract *IMembershipVerifierTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IMembershipVerifierRaw is an auto generated low-level Go binding around an Ethereum contract. +type IMembershipVerifierRaw struct { + Contract *IMembershipVerifier // Generic contract binding to access the raw methods on +} + +// IMembershipVerifierCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IMembershipVerifierCallerRaw struct { + Contract *IMembershipVerifierCaller // Generic read-only contract binding to access the raw methods on +} + +// IMembershipVerifierTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IMembershipVerifierTransactorRaw struct { + Contract *IMembershipVerifierTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIMembershipVerifier creates a new instance of IMembershipVerifier, bound to a specific deployed contract. +func NewIMembershipVerifier(address common.Address, backend bind.ContractBackend) (*IMembershipVerifier, error) { + contract, err := bindIMembershipVerifier(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IMembershipVerifier{IMembershipVerifierCaller: IMembershipVerifierCaller{contract: contract}, IMembershipVerifierTransactor: IMembershipVerifierTransactor{contract: contract}, IMembershipVerifierFilterer: IMembershipVerifierFilterer{contract: contract}}, nil +} + +// NewIMembershipVerifierCaller creates a new read-only instance of IMembershipVerifier, bound to a specific deployed contract. +func NewIMembershipVerifierCaller(address common.Address, caller bind.ContractCaller) (*IMembershipVerifierCaller, error) { + contract, err := bindIMembershipVerifier(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IMembershipVerifierCaller{contract: contract}, nil +} + +// NewIMembershipVerifierTransactor creates a new write-only instance of IMembershipVerifier, bound to a specific deployed contract. +func NewIMembershipVerifierTransactor(address common.Address, transactor bind.ContractTransactor) (*IMembershipVerifierTransactor, error) { + contract, err := bindIMembershipVerifier(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IMembershipVerifierTransactor{contract: contract}, nil +} + +// NewIMembershipVerifierFilterer creates a new log filterer instance of IMembershipVerifier, bound to a specific deployed contract. +func NewIMembershipVerifierFilterer(address common.Address, filterer bind.ContractFilterer) (*IMembershipVerifierFilterer, error) { + contract, err := bindIMembershipVerifier(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IMembershipVerifierFilterer{contract: contract}, nil +} + +// bindIMembershipVerifier binds a generic wrapper to an already deployed contract. +func bindIMembershipVerifier(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IMembershipVerifierMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IMembershipVerifier *IMembershipVerifierRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IMembershipVerifier.Contract.IMembershipVerifierCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IMembershipVerifier *IMembershipVerifierRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IMembershipVerifier.Contract.IMembershipVerifierTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IMembershipVerifier *IMembershipVerifierRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IMembershipVerifier.Contract.IMembershipVerifierTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IMembershipVerifier *IMembershipVerifierCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IMembershipVerifier.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IMembershipVerifier *IMembershipVerifierTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IMembershipVerifier.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IMembershipVerifier *IMembershipVerifierTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IMembershipVerifier.Contract.contract.Transact(opts, method, params...) +} + +// VerifyMembership is a paid mutator transaction binding the contract method 0xcb535ab5. +// +// Solidity: function verifyMembership((((bytes,bytes)[],bytes,bytes,bytes)[],uint256) proof, bytes key, bytes expectedValue) returns() +func (_IMembershipVerifier *IMembershipVerifierTransactor) VerifyMembership(opts *bind.TransactOpts, proof Ics23Proof, key []byte, expectedValue []byte) (*types.Transaction, error) { + return _IMembershipVerifier.contract.Transact(opts, "verifyMembership", proof, key, expectedValue) +} + +// VerifyMembership is a paid mutator transaction binding the contract method 0xcb535ab5. +// +// Solidity: function verifyMembership((((bytes,bytes)[],bytes,bytes,bytes)[],uint256) proof, bytes key, bytes expectedValue) returns() +func (_IMembershipVerifier *IMembershipVerifierSession) VerifyMembership(proof Ics23Proof, key []byte, expectedValue []byte) (*types.Transaction, error) { + return _IMembershipVerifier.Contract.VerifyMembership(&_IMembershipVerifier.TransactOpts, proof, key, expectedValue) +} + +// VerifyMembership is a paid mutator transaction binding the contract method 0xcb535ab5. +// +// Solidity: function verifyMembership((((bytes,bytes)[],bytes,bytes,bytes)[],uint256) proof, bytes key, bytes expectedValue) returns() +func (_IMembershipVerifier *IMembershipVerifierTransactorSession) VerifyMembership(proof Ics23Proof, key []byte, expectedValue []byte) (*types.Transaction, error) { + return _IMembershipVerifier.Contract.VerifyMembership(&_IMembershipVerifier.TransactOpts, proof, key, expectedValue) +} diff --git a/bindings/go/ilightclient/INonMembershipVerifier.go b/bindings/go/ilightclient/INonMembershipVerifier.go new file mode 100644 index 00000000..8c2de30c --- /dev/null +++ b/bindings/go/ilightclient/INonMembershipVerifier.go @@ -0,0 +1,222 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ilightclient + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// Ics23Proof is an auto generated low-level Go binding around an user-defined struct. +type Ics23Proof struct { + Proof []OpIcs23Proof + Height *big.Int +} + +// OpIcs23Proof is an auto generated low-level Go binding around an user-defined struct. +type OpIcs23Proof struct { + Path []OpIcs23ProofPath + Key []byte + Value []byte + Prefix []byte +} + +// OpIcs23ProofPath is an auto generated low-level Go binding around an user-defined struct. +type OpIcs23ProofPath struct { + Prefix []byte + Suffix []byte +} + +// INonMembershipVerifierMetaData contains all meta data concerning the INonMembershipVerifier contract. +var INonMembershipVerifierMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"verifyNonMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// INonMembershipVerifierABI is the input ABI used to generate the binding from. +// Deprecated: Use INonMembershipVerifierMetaData.ABI instead. +var INonMembershipVerifierABI = INonMembershipVerifierMetaData.ABI + +// INonMembershipVerifier is an auto generated Go binding around an Ethereum contract. +type INonMembershipVerifier struct { + INonMembershipVerifierCaller // Read-only binding to the contract + INonMembershipVerifierTransactor // Write-only binding to the contract + INonMembershipVerifierFilterer // Log filterer for contract events +} + +// INonMembershipVerifierCaller is an auto generated read-only Go binding around an Ethereum contract. +type INonMembershipVerifierCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// INonMembershipVerifierTransactor is an auto generated write-only Go binding around an Ethereum contract. +type INonMembershipVerifierTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// INonMembershipVerifierFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type INonMembershipVerifierFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// INonMembershipVerifierSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type INonMembershipVerifierSession struct { + Contract *INonMembershipVerifier // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// INonMembershipVerifierCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type INonMembershipVerifierCallerSession struct { + Contract *INonMembershipVerifierCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// INonMembershipVerifierTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type INonMembershipVerifierTransactorSession struct { + Contract *INonMembershipVerifierTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// INonMembershipVerifierRaw is an auto generated low-level Go binding around an Ethereum contract. +type INonMembershipVerifierRaw struct { + Contract *INonMembershipVerifier // Generic contract binding to access the raw methods on +} + +// INonMembershipVerifierCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type INonMembershipVerifierCallerRaw struct { + Contract *INonMembershipVerifierCaller // Generic read-only contract binding to access the raw methods on +} + +// INonMembershipVerifierTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type INonMembershipVerifierTransactorRaw struct { + Contract *INonMembershipVerifierTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewINonMembershipVerifier creates a new instance of INonMembershipVerifier, bound to a specific deployed contract. +func NewINonMembershipVerifier(address common.Address, backend bind.ContractBackend) (*INonMembershipVerifier, error) { + contract, err := bindINonMembershipVerifier(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &INonMembershipVerifier{INonMembershipVerifierCaller: INonMembershipVerifierCaller{contract: contract}, INonMembershipVerifierTransactor: INonMembershipVerifierTransactor{contract: contract}, INonMembershipVerifierFilterer: INonMembershipVerifierFilterer{contract: contract}}, nil +} + +// NewINonMembershipVerifierCaller creates a new read-only instance of INonMembershipVerifier, bound to a specific deployed contract. +func NewINonMembershipVerifierCaller(address common.Address, caller bind.ContractCaller) (*INonMembershipVerifierCaller, error) { + contract, err := bindINonMembershipVerifier(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &INonMembershipVerifierCaller{contract: contract}, nil +} + +// NewINonMembershipVerifierTransactor creates a new write-only instance of INonMembershipVerifier, bound to a specific deployed contract. +func NewINonMembershipVerifierTransactor(address common.Address, transactor bind.ContractTransactor) (*INonMembershipVerifierTransactor, error) { + contract, err := bindINonMembershipVerifier(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &INonMembershipVerifierTransactor{contract: contract}, nil +} + +// NewINonMembershipVerifierFilterer creates a new log filterer instance of INonMembershipVerifier, bound to a specific deployed contract. +func NewINonMembershipVerifierFilterer(address common.Address, filterer bind.ContractFilterer) (*INonMembershipVerifierFilterer, error) { + contract, err := bindINonMembershipVerifier(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &INonMembershipVerifierFilterer{contract: contract}, nil +} + +// bindINonMembershipVerifier binds a generic wrapper to an already deployed contract. +func bindINonMembershipVerifier(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := INonMembershipVerifierMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_INonMembershipVerifier *INonMembershipVerifierRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _INonMembershipVerifier.Contract.INonMembershipVerifierCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_INonMembershipVerifier *INonMembershipVerifierRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _INonMembershipVerifier.Contract.INonMembershipVerifierTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_INonMembershipVerifier *INonMembershipVerifierRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _INonMembershipVerifier.Contract.INonMembershipVerifierTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_INonMembershipVerifier *INonMembershipVerifierCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _INonMembershipVerifier.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_INonMembershipVerifier *INonMembershipVerifierTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _INonMembershipVerifier.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_INonMembershipVerifier *INonMembershipVerifierTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _INonMembershipVerifier.Contract.contract.Transact(opts, method, params...) +} + +// VerifyNonMembership is a paid mutator transaction binding the contract method 0xfdaab4e5. +// +// Solidity: function verifyNonMembership((((bytes,bytes)[],bytes,bytes,bytes)[],uint256) proof, bytes key) returns() +func (_INonMembershipVerifier *INonMembershipVerifierTransactor) VerifyNonMembership(opts *bind.TransactOpts, proof Ics23Proof, key []byte) (*types.Transaction, error) { + return _INonMembershipVerifier.contract.Transact(opts, "verifyNonMembership", proof, key) +} + +// VerifyNonMembership is a paid mutator transaction binding the contract method 0xfdaab4e5. +// +// Solidity: function verifyNonMembership((((bytes,bytes)[],bytes,bytes,bytes)[],uint256) proof, bytes key) returns() +func (_INonMembershipVerifier *INonMembershipVerifierSession) VerifyNonMembership(proof Ics23Proof, key []byte) (*types.Transaction, error) { + return _INonMembershipVerifier.Contract.VerifyNonMembership(&_INonMembershipVerifier.TransactOpts, proof, key) +} + +// VerifyNonMembership is a paid mutator transaction binding the contract method 0xfdaab4e5. +// +// Solidity: function verifyNonMembership((((bytes,bytes)[],bytes,bytes,bytes)[],uint256) proof, bytes key) returns() +func (_INonMembershipVerifier *INonMembershipVerifierTransactorSession) VerifyNonMembership(proof Ics23Proof, key []byte) (*types.Transaction, error) { + return _INonMembershipVerifier.Contract.VerifyNonMembership(&_INonMembershipVerifier.TransactOpts, proof, key) +} diff --git a/package-lock.json b/package-lock.json index 5916fdd1..993d5430 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@open-ibc/vibc-core-smart-contracts", - "version": "4.0.9", + "version": "4.0.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@open-ibc/vibc-core-smart-contracts", - "version": "4.0.9", + "version": "4.0.11", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^12.1.0", diff --git a/package.json b/package.json index 6f7a68f1..d3e8cbb0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@open-ibc/vibc-core-smart-contracts", - "version": "4.0.10", + "version": "4.0.11", "main": "dist/index.js", "bin": { "verify-vibc-core-smart-contracts": "./dist/scripts/verify-contract-script.js", diff --git a/src/evm/contracts/ILightClient.sol/IClientUpdates.ts b/src/evm/contracts/ILightClient.sol/IClientUpdates.ts new file mode 100644 index 00000000..8c34fad9 --- /dev/null +++ b/src/evm/contracts/ILightClient.sol/IClientUpdates.ts @@ -0,0 +1,114 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IClientUpdatesInterface extends Interface { + getFunction( + nameOrSignature: "LIGHT_CLIENT_TYPE" | "updateClient" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "LIGHT_CLIENT_TYPE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "updateClient", + values: [BytesLike, BigNumberish, BigNumberish] + ): string; + + decodeFunctionResult( + functionFragment: "LIGHT_CLIENT_TYPE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateClient", + data: BytesLike + ): Result; +} + +export interface IClientUpdates extends BaseContract { + connect(runner?: ContractRunner | null): IClientUpdates; + waitForDeployment(): Promise; + + interface: IClientUpdatesInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + LIGHT_CLIENT_TYPE: TypedContractMethod<[], [bigint], "view">; + + updateClient: TypedContractMethod< + [proof: BytesLike, height: BigNumberish, appHash: BigNumberish], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "LIGHT_CLIENT_TYPE" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "updateClient" + ): TypedContractMethod< + [proof: BytesLike, height: BigNumberish, appHash: BigNumberish], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/evm/contracts/ILightClient.ts b/src/evm/contracts/ILightClient.sol/ILightClient.ts similarity index 99% rename from src/evm/contracts/ILightClient.ts rename to src/evm/contracts/ILightClient.sol/ILightClient.ts index 493d2870..661d4442 100644 --- a/src/evm/contracts/ILightClient.ts +++ b/src/evm/contracts/ILightClient.sol/ILightClient.ts @@ -18,7 +18,7 @@ import type { TypedEventLog, TypedListener, TypedContractMethod, -} from "./common"; +} from "../common"; export type OpIcs23ProofPathStruct = { prefix: BytesLike; suffix: BytesLike }; diff --git a/src/evm/contracts/ILightClient.sol/IMembershipVerifier.ts b/src/evm/contracts/ILightClient.sol/IMembershipVerifier.ts new file mode 100644 index 00000000..1c76aa2c --- /dev/null +++ b/src/evm/contracts/ILightClient.sol/IMembershipVerifier.ts @@ -0,0 +1,135 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export type OpIcs23ProofPathStruct = { prefix: BytesLike; suffix: BytesLike }; + +export type OpIcs23ProofPathStructOutput = [prefix: string, suffix: string] & { + prefix: string; + suffix: string; +}; + +export type OpIcs23ProofStruct = { + path: OpIcs23ProofPathStruct[]; + key: BytesLike; + value: BytesLike; + prefix: BytesLike; +}; + +export type OpIcs23ProofStructOutput = [ + path: OpIcs23ProofPathStructOutput[], + key: string, + value: string, + prefix: string +] & { + path: OpIcs23ProofPathStructOutput[]; + key: string; + value: string; + prefix: string; +}; + +export type Ics23ProofStruct = { + proof: OpIcs23ProofStruct[]; + height: BigNumberish; +}; + +export type Ics23ProofStructOutput = [ + proof: OpIcs23ProofStructOutput[], + height: bigint +] & { proof: OpIcs23ProofStructOutput[]; height: bigint }; + +export interface IMembershipVerifierInterface extends Interface { + getFunction(nameOrSignature: "verifyMembership"): FunctionFragment; + + encodeFunctionData( + functionFragment: "verifyMembership", + values: [Ics23ProofStruct, BytesLike, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "verifyMembership", + data: BytesLike + ): Result; +} + +export interface IMembershipVerifier extends BaseContract { + connect(runner?: ContractRunner | null): IMembershipVerifier; + waitForDeployment(): Promise; + + interface: IMembershipVerifierInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + verifyMembership: TypedContractMethod< + [proof: Ics23ProofStruct, key: BytesLike, expectedValue: BytesLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "verifyMembership" + ): TypedContractMethod< + [proof: Ics23ProofStruct, key: BytesLike, expectedValue: BytesLike], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/evm/contracts/ILightClient.sol/INonMembershipVerifier.ts b/src/evm/contracts/ILightClient.sol/INonMembershipVerifier.ts new file mode 100644 index 00000000..67b316ca --- /dev/null +++ b/src/evm/contracts/ILightClient.sol/INonMembershipVerifier.ts @@ -0,0 +1,135 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export type OpIcs23ProofPathStruct = { prefix: BytesLike; suffix: BytesLike }; + +export type OpIcs23ProofPathStructOutput = [prefix: string, suffix: string] & { + prefix: string; + suffix: string; +}; + +export type OpIcs23ProofStruct = { + path: OpIcs23ProofPathStruct[]; + key: BytesLike; + value: BytesLike; + prefix: BytesLike; +}; + +export type OpIcs23ProofStructOutput = [ + path: OpIcs23ProofPathStructOutput[], + key: string, + value: string, + prefix: string +] & { + path: OpIcs23ProofPathStructOutput[]; + key: string; + value: string; + prefix: string; +}; + +export type Ics23ProofStruct = { + proof: OpIcs23ProofStruct[]; + height: BigNumberish; +}; + +export type Ics23ProofStructOutput = [ + proof: OpIcs23ProofStructOutput[], + height: bigint +] & { proof: OpIcs23ProofStructOutput[]; height: bigint }; + +export interface INonMembershipVerifierInterface extends Interface { + getFunction(nameOrSignature: "verifyNonMembership"): FunctionFragment; + + encodeFunctionData( + functionFragment: "verifyNonMembership", + values: [Ics23ProofStruct, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "verifyNonMembership", + data: BytesLike + ): Result; +} + +export interface INonMembershipVerifier extends BaseContract { + connect(runner?: ContractRunner | null): INonMembershipVerifier; + waitForDeployment(): Promise; + + interface: INonMembershipVerifierInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + verifyNonMembership: TypedContractMethod< + [proof: Ics23ProofStruct, key: BytesLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "verifyNonMembership" + ): TypedContractMethod< + [proof: Ics23ProofStruct, key: BytesLike], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/src/evm/contracts/ILightClient.sol/index.ts b/src/evm/contracts/ILightClient.sol/index.ts new file mode 100644 index 00000000..ffdbb286 --- /dev/null +++ b/src/evm/contracts/ILightClient.sol/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IClientUpdates } from "./IClientUpdates"; +export type { ILightClient } from "./ILightClient"; +export type { IMembershipVerifier } from "./IMembershipVerifier"; +export type { INonMembershipVerifier } from "./INonMembershipVerifier"; diff --git a/src/evm/contracts/factories/Dispatcher__factory.ts b/src/evm/contracts/factories/Dispatcher__factory.ts index 7e7a204c..76b06b59 100644 --- a/src/evm/contracts/factories/Dispatcher__factory.ts +++ b/src/evm/contracts/factories/Dispatcher__factory.ts @@ -2090,7 +2090,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516158d46200011f60003960008181610c1f01528181610c68015281816113c201528181611402015261149501526158d46000f3fe6080604052600436106101c25760003560e01c8063715018a6116100f7578063b12f89be11610095578063c899e27211610064578063c899e2721461051e578063e30c39781461053e578063f2fde38b1461055c578063f90b8e961461057c57600080fd5b8063b12f89be14610486578063ba5a4d25146104a6578063c00fa7c0146104c6578063c3e1155c146104e657600080fd5b80637ab4339d116100d15780637ab4339d1461040857806381bc079b146104285780638da5cb5b146104485780639f59ae711461046657600080fd5b8063715018a6146103bc5780637774a6d3146103d157806379ba5097146103f357600080fd5b8063478222c211610164578063556d51781161013e578063556d51781461033c5780635d7adf961461035c5780636050b5f31461037c5780636b67055e1461039c57600080fd5b8063478222c2146102cd5780634f1ef2861461030657806352d1902d1461031957600080fd5b80633659cfe6116101a05780633659cfe614610240578063418925b71461026057806342852d2414610280578063429446b6146102ad57600080fd5b80631eb9fc86146101c75780632494546b146101e95780632bf5d19d14610220575b600080fd5b3480156101d357600080fd5b506101e76101e2366004613fc6565b61059c565b005b3480156101f557600080fd5b5060fa546102069063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b34801561022c57600080fd5b506101e761023b36600461409c565b610926565b34801561024c57600080fd5b506101e761025b366004614146565b610c15565b34801561026c57600080fd5b506101e761027b3660046141a4565b610cfd565b34801561028c57600080fd5b506102a061029b366004614265565b610db6565b6040516102179190614365565b3480156102b957600080fd5b506101e76102c8366004613fc6565b61110e565b3480156102d957600080fd5b50610105546102ee906001600160a01b031681565b6040516001600160a01b039091168152602001610217565b6101e76103143660046144b8565b6113b8565b34801561032557600080fd5b5061032e611488565b604051908152602001610217565b34801561034857600080fd5b506101e761035736600461451b565b61153b565b34801561036857600080fd5b506101e7610377366004614583565b611553565b34801561038857600080fd5b506101e7610397366004614583565b611863565b3480156103a857600080fd5b506101e76103b7366004614583565b611875565b3480156103c857600080fd5b506101e7611f7e565b3480156103dd57600080fd5b506103e6611f92565b60405161021791906145dc565b3480156103ff57600080fd5b506101e7612020565b34801561041457600080fd5b506101e761042336600461460f565b612097565b34801561043457600080fd5b506101e7610443366004614660565b612220565b34801561045457600080fd5b506033546001600160a01b03166102ee565b34801561047257600080fd5b506101e7610481366004614679565b6122e8565b34801561049257600080fd5b5061032e6104a13660046146ba565b61233d565b3480156104b257600080fd5b506101e76104c1366004614705565b6123f6565b3480156104d257600080fd5b506101e76104e1366004614679565b612932565b3480156104f257600080fd5b506105066105013660046147a9565b61296e565b6040516001600160401b039091168152602001610217565b34801561052a57600080fd5b506101e7610539366004614806565b612ac2565b34801561054a57600080fd5b506065546001600160a01b03166102ee565b34801561056857600080fd5b506101e7610577366004614146565b612b6d565b34801561058857600080fd5b506101e7610597366004614888565b612bde565b6105a461320b565b60028510156105c65760405163af0ba14d60e01b815260040160405180910390fd5b6105ec6105d388806148e0565b60208a01356105e286806148e0565b8760200135613264565b61064e8686600081811061060257610602614926565b905060200281019061061491906148e0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061329f92505050565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb36106818c806148e0565b8d602001356040518463ffffffff1660e01b81526004016106a493929190614965565b600060405180830381865af41580156106c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106e991908101906149d9565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60078a8e806040019061071691906148e0565b8f8f6107228e806148e0565b8f602001356040518a63ffffffff1660e01b815260040161074b99989796959493929190614a62565b600060405180830381865af4158015610768573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079091908101906149d9565b6040518463ffffffff1660e01b81526004016107ae93929190614b7c565b600060405180830381600087803b1580156107c857600080fd5b505af11580156107dc573d6000803e3d6000fd5b50600092506107f791506107f2905089806148e0565b61331e565b9050600080610869836301d08fc560e71b6020808e01359089013561081f60408b018b6148e0565b6040516024016108329493929190614d2a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526133b1565b9150915081156108ce57610882838b8b8b8b8b8b61349d565b826001600160a01b03167fcf8be9ab2b5edf8beb2c45abe8e0cc7646318ac19f6c3164ba2e19e93a8a32af8b602001356040516108c191815260200190565b60405180910390a2610910565b826001600160a01b03167f971a4433f5bff5f011728a4123aeeca4b5275ac20b013cf276e65510491ac26f8260405161090791906145dc565b60405180910390a25b50505061091d6001609755565b50505050505050565b61092e61320b565b6002831461094f5760405163af0ba14d60e01b815260040160405180910390fd5b61095c6105d388806148e0565b6109728484600081811061060257610602614926565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb36109a58c806148e0565b8d602001356040518463ffffffff1660e01b81526004016109c893929190614965565b600060405180830381865af41580156109e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0d91908101906149d9565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60068c8e8060400190610a3a91906148e0565b8d8d610a468e806148e0565b8f602001356040518a63ffffffff1660e01b8152600401610a6f99989796959493929190614a62565b600060405180830381865af4158015610a8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ab491908101906149d9565b6040518463ffffffff1660e01b8152600401610ad293929190614b7c565b600060405180830381600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b5060009250610b1691506107f2905089806148e0565b9050600080610b6c83634bdb559760e01b8b8a8a8f602001358b8060000190610b3f91906148e0565b8d602001358e8060400190610b5491906148e0565b60405160240161083299989796959493929190614d97565b915091508115610bdc57826001600160a01b03167ff910705a7a768eb5958f281a5f84cae8bffc5dd811ca5cd303dda140a423698c82806020019051810190610bb59190614dfc565b8b8b8b8b610bc38c806148e0565b8d602001356040516108c1989796959493929190614e44565b826001600160a01b03167f9e2fe55a3b54b57f82334c273f8d048cd7f05ad19c16cf334276a8c1fec4b6fd8260405161090791906145dc565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c665760405162461bcd60e51b8152600401610c5d90614eaa565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610caf600080516020615858833981519152546001600160a01b031690565b6001600160a01b031614610cd55760405162461bcd60e51b8152600401610c5d90614ef6565b610cde8161373d565b60408051600080825260208201909252610cfa91839190613745565b50565b610d0561320b565b600283141580610d13575080155b15610d3157604051637d6ba8a560e01b815260040160405180910390fd5b6000879003610d535760405163f61bbcf360e01b815260040160405180910390fd5b336001600160a01b03167f20fd8a5856711b18d00def4aa6abafbe00ce6d60795e015cc1cad35eb9b463598989898989898989604051610d9a989796959493929190614f42565b60405180910390a2610dac6001609755565b5050505050505050565b610dfc6040805160e08101909152606081526020810160008152602001600015158152602001606081526020016060815260200160008019168152602001606081525090565b6001600160a01b038316600090815260fb6020908152604080832085845290915290819020815160e08101909252805482908290610e3990614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6590614fa2565b8015610eb25780601f10610e8757610100808354040283529160200191610eb2565b820191906000526020600020905b815481529060010190602001808311610e9557829003601f168201915b5050509183525050600182015460209091019060ff166002811115610ed957610ed96142e9565b6002811115610eea57610eea6142e9565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b82821015610fd0578382906000526020600020018054610f4390614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6f90614fa2565b8015610fbc5780601f10610f9157610100808354040283529160200191610fbc565b820191906000526020600020905b815481529060010190602001808311610f9f57829003601f168201915b505050505081526020019060010190610f24565b505050508152602001600382018054610fe890614fa2565b80601f016020809104026020016040519081016040528092919081815260200182805461101490614fa2565b80156110615780601f1061103657610100808354040283529160200191611061565b820191906000526020600020905b81548152906001019060200180831161104457829003601f168201915b505050505081526020016004820154815260200160058201805461108490614fa2565b80601f01602080910402602001604051908101604052809291908181526020018280546110b090614fa2565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b505050505081525050905092915050565b61111661320b565b60028510156111385760405163af0ba14d60e01b815260040160405180910390fd5b6111456105d388806148e0565b61115b8686600081811061060257610602614926565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb361118e8c806148e0565b8d602001356040518463ffffffff1660e01b81526004016111b193929190614965565b600060405180830381865af41580156111ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111f691908101906149d9565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60088a8e806040019061122391906148e0565b8f8f61122f8e806148e0565b8f602001356040518a63ffffffff1660e01b815260040161125899989796959493929190614a62565b600060405180830381865af4158015611275573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261129d91908101906149d9565b6040518463ffffffff1660e01b81526004016112bb93929190614b7c565b600060405180830381600087803b1580156112d557600080fd5b505af11580156112e9573d6000803e3d6000fd5b50600092506112ff91506107f2905089806148e0565b90506000806113278363fad28a2460e01b8c6020013560405160240161083291815260200190565b91509150811561137f57611340838b8b8b8b8b8b61349d565b826001600160a01b03167fe80f571f70f7cabf9d7ac60ece08421be374117776c311c327a083ca398f802f8b602001356040516108c191815260200190565b826001600160a01b03167ff6a58ef30f66943749e8c29c661c84da143a1c8ed017f5faa92b509e0000875a8260405161090791906145dc565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114005760405162461bcd60e51b8152600401610c5d90614eaa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611449600080516020615858833981519152546001600160a01b031690565b6001600160a01b03161461146f5760405162461bcd60e51b8152600401610c5d90614ef6565b6114788261373d565b61148482826001613745565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115285760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c5d565b5060008051602061585883398151915290565b6115436138b0565b61154e83838361390a565b505050565b61155b61320b565b61157461156b6020840184614fd6565b602001356139a5565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b81526004016115ba9190615058565b600060405180830381865af41580156115d7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ff91908101906149d9565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da90611636908990600401615058565b602060405180830381865af4158015611653573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611677919061511a565b60405160200161168991815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016116b693929190614b7c565b600060405180830381600087803b1580156116d057600080fd5b505af11580156116e4573d6000803e3d6000fd5b5050505060006117078380602001906116fd9190614fd6565b6107f290806148e0565b6001600160a01b0381166000908152610100602090815260408220929350909190829061173690870187614fd6565b602001358152602001908152602001600020600085604001602081019061175d9190615133565b6001600160401b0316815260208101919091526040016000205460ff169050801561179b5760405163066c745760e01b815260040160405180910390fd5b6117c36117ae60e0860160c08701615133565b6117be60c0870160a08801615133565b613a70565b6117e0576040516312c9cc9f60e01b815260040160405180910390fd5b6117ed6020850185614fd6565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc61182c6060880160408901615133565b6080880161184060e08a0160c08b01615133565b60405161184f9392919061514e565b60405180910390a350506114846001609755565b61186b61320b565b6114846001609755565b61187d61320b565b61188d61156b6020840184614fd6565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b81526004016118d39190615058565b600060405180830381865af41580156118f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261191891908101906149d9565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da9061194f908990600401615058565b602060405180830381865af415801561196c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611990919061511a565b6040516020016119a291815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016119cf93929190614b7c565b600060405180830381600087803b1580156119e957600080fd5b505af11580156119fd573d6000803e3d6000fd5b505050506000611a168380602001906116fd9190614fd6565b6001600160a01b03811660009081526101006020908152604082209293509091908290611a4590870187614fd6565b6020013581526020019081526020016000206000856040016020810190611a6c9190615133565b6001600160401b0316815260208101919091526040016000205460ff1690508015611aaa5760405163066c745760e01b815260040160405180910390fd5b6001600160a01b03821660009081526101006020908152604082206001929091611ad690880188614fd6565b6020013581526020019081526020016000206000866040016020810190611afd9190615133565b6001600160401b031681526020810191909152604001600020805460ff191691151591909117905560026001600160a01b038316600090815260fb6020908152604082209190611b4f90880188614fd6565b60209081013582528101919091526040016000206001015460ff166002811115611b7b57611b7b6142e9565b03611c7a576001600160a01b038216600090815260fd6020908152604082209190611ba890870187614fd6565b60209081013582528101919091526040908101600020546001600160401b031690611bd99060608701908701615133565b6001600160401b031614611c005760405163362a414d60e01b815260040160405180910390fd5b611c106060850160408601615133565b611c1b90600161517e565b6001600160a01b038316600090815260fd6020908152604082209190611c4390880188614fd6565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b611c876020850185614fd6565b602001356001600160a01b0383167fde5b57e6566d68a30b0979431df3d5df6db3b9aa89f8820f595b9315bf86d067611cc66060880160408901615133565b6040516001600160401b03909116815260200160405180910390a3611cf46117ae60e0860160c08701615133565b15611d7757611d066020850185614fd6565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc611d456060880160408901615133565b60808801611d5960e08a0160c08b01615133565b604051611d689392919061514e565b60405180910390a3505061186b565b6040805180820190915260008152606060208201526000806000611dae86634dcc0aa660e01b8a6040516024016108329190615268565b915091508115611de75780806020019051810190611dcc91906152f4565b90945092508215611de25750505050505061186b565b611dff565b60408051808201909152600081526020810182905293505b6001600160a01b0386166000908152610101602090815260408220908290611e29908c018c614fd6565b60200135815260200190815260200160002060008a6040016020810190611e509190615133565b6001600160401b0316815260208101919091526040016000205460ff1690508015611e8e57604051637aa549d360e01b815260040160405180910390fd5b6001600160a01b03871660009081526101016020908152604082206001929091611eba908d018d614fd6565b60200135815260200190815260200160002060008b6040016020810190611ee19190615133565b6001600160401b03168152602080820192909252604001600020805460ff191692151592909217909155611f17908a018a614fd6565b602001356001600160a01b0388167fa32e6f42b1d63fb83ad73b009a6dbb9413d1da02e95b1bb08f081815eea8db20611f5660608d0160408e01615133565b88604051611f6592919061535b565b60405180910390a3505050505050506114846001609755565b611f866138b0565b611f906000613abe565b565b60f98054611f9f90614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054611fcb90614fa2565b80156120185780601f10611fed57610100808354040283529160200191612018565b820191906000526020600020905b815481529060010190602001808311611ffb57829003601f168201915b505050505081565b60655433906001600160a01b0316811461208e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610c5d565b610cfa81613abe565b600054600290610100900460ff161580156120b9575060005460ff8083169116105b61211c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c5d565b6000805461ffff191660ff83161761010017905561213861320b565b825160000361215a5760405163e8cf362360e01b815260040160405180910390fd5b6001600160a01b0382166121815760405163cbdd34cf60e01b815260040160405180910390fd5b612189613ad7565b612191613b06565b60f961219d84826153c3565b50825160fa805463ffffffff191663ffffffff90921691909117905561010580546001600160a01b0319166001600160a01b03841617905560016097556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b61222861320b565b61223181613b35565b33600090815260fb602090815260408083208484529091528120906122568282613e50565b60018201805461ffff19169055612271600283016000613e8a565b61227f600383016000613e50565b60048201600090556005820160006122979190613e50565b50506000818152610103602052604081206122b191613e50565b604051819033907f21372e37743553ba8e5f61239803174a827c7732d53ec8adcb76c6b3bb2c13f190600090a3610cfa6001609755565b6122f06138b0565b60008190036123125760405163e8cf362360e01b815260040160405180910390fd5b60f961231f828483615482565b5060fa805463ffffffff191663ffffffff9290921691909117905550565b600061237e83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061329f92505050565b6001600160a01b03166344c9af28856040518263ffffffff1660e01b81526004016123ab91815260200190565b602060405180830381865afa1580156123c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ec919061511a565b90505b9392505050565b6123fe61320b565b600061240d6116fd8680614fd6565b905061241c61156b8680614fd6565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__6311a7a373896040518263ffffffff1660e01b81526004016124629190615058565b600060405180830381865af415801561247f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124a791908101906149d9565b6040516374e9704560e01b815273__$d825222459c46c14afb2efe0967c30e98d$__906374e97045906124e0908b908b90600401615542565b602060405180830381865af41580156124fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612521919061511a565b60405160200161253391815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161256093929190614b7c565b600060405180830381600087803b15801561257a57600080fd5b505af115801561258e573d6000803e3d6000fd5b505050506001600160a01b038116600090815260ff60205260408120816125b58880614fd6565b60200135815260200190815260200160002060008760400160208101906125dc9190615133565b6001600160401b0316815260208101919091526040016000205460ff169050806126195760405163ca89746b60e01b815260040160405180910390fd5b6000806126b884637e1d42b560e01b8a73__$d825222459c46c14afb2efe0967c30e98d$__63360b8cd78c8c6040518363ffffffff1660e01b8152600401612662929190615542565b600060405180830381865af415801561267f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126a79190810190615556565b60405160240161083292919061558a565b9150915081156128dc5760026001600160a01b038516600090815260fb60205260408120906126e78b80614fd6565b60209081013582528101919091526040016000206001015460ff166002811115612713576127136142e9565b03612808576001600160a01b038416600090815260fe602052604081209061273b8a80614fd6565b60209081013582528101919091526040908101600020546001600160401b03169061276c9060608b01908b01615133565b6001600160401b0316146127935760405163362a414d60e01b815260040160405180910390fd5b6127a36060890160408a01615133565b6127ae90600161517e565b6001600160a01b038516600090815260fe60205260408120906127d18b80614fd6565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b038416600090815260ff602052604081209061282b8a80614fd6565b60200135815260200190815260200160002060008960400160208101906128529190615133565b6001600160401b031681526020810191909152604001600020805460ff1916905561287d8880614fd6565b602001356001600160a01b0385167fe46f6591236abe528fe47a3b281fb002524dadd3e62b1f317ed285d07273c3b16128bc60608c0160408d01615133565b6040516001600160401b03909116815260200160405180910390a361291e565b836001600160a01b03167f625eea143c9dae6915c809da47016c22d9cd006c3ace7c345c5cbcf57d3aefbc8260405161291591906145dc565b60405180910390a25b5050505061292c6001609755565b50505050565b61293a6138b0565b610104828260405161294d9291906155af565b90815260405190819003602001902080546001600160a01b03191690555050565b600061297861320b565b61298185613b35565b42826001600160401b0316116129aa5760405163551ea0fb60e11b815260040160405180910390fd5b5033600090815260fc602090815260408083208784529091528120546001600160401b0316908190036129f057604051631e510bfb60e21b815260040160405180910390fd5b33600090815260ff6020908152604080832088845282528083206001600160401b03851684529091529020805460ff19166001908117909155612a3490829061517e565b33600081815260fc602090815260408083208a845290915290819020805467ffffffffffffffff19166001600160401b03949094169390931790925590518691907fb5bff96e18da044e4e34510d16df9053b9f1920f6a960732e5aaf22fe9b8013690612aa89088908890879089906155bf565b60405180910390a3612aba6001609755565b949350505050565b612b0182828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061329f92505050565b6001600160a01b03166349ff245e878787876040518563ffffffff1660e01b8152600401612b3294939291906155f4565b600060405180830381600087803b158015612b4c57600080fd5b505af1158015612b60573d6000803e3d6000fd5b505050505b505050505050565b612b756138b0565b606580546001600160a01b0383166001600160a01b03199091168117909155612ba66033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b612be661320b565b6001600160a01b038316612c0d5760405163cbdd34cf60e01b815260040160405180910390fd5b6001600160a01b038316600090815260fb60209081526040808320858452909152808220815160e08101909252805482908290612c4990614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054612c7590614fa2565b8015612cc25780601f10612c9757610100808354040283529160200191612cc2565b820191906000526020600020905b815481529060010190602001808311612ca557829003601f168201915b5050509183525050600182015460209091019060ff166002811115612ce957612ce96142e9565b6002811115612cfa57612cfa6142e9565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b82821015612de0578382906000526020600020018054612d5390614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054612d7f90614fa2565b8015612dcc5780601f10612da157610100808354040283529160200191612dcc565b820191906000526020600020905b815481529060010190602001808311612daf57829003601f168201915b505050505081526020019060010190612d34565b505050508152602001600382018054612df890614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054612e2490614fa2565b8015612e715780601f10612e4657610100808354040283529160200191612e71565b820191906000526020600020905b815481529060010190602001808311612e5457829003601f168201915b5050505050815260200160048201548152602001600582018054612e9490614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054612ec090614fa2565b8015612f0d5780601f10612ee257610100808354040283529160200191612f0d565b820191906000526020600020905b815481529060010190602001808311612ef057829003601f168201915b5050509190925250505060a0810151909150612f3c57604051634d93b09d60e11b815260040160405180910390fd5b612f45836139a5565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__636f6547268560c00151886040518363ffffffff1660e01b8152600401612f9192919061561b565b600060405180830381865af4158015612fae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fd691908101906149d9565b602085015185516060870151608088015160a0890151604051631f621e1560e31b815273__$d825222459c46c14afb2efe0967c30e98d$__9563fb10f0a89561302c95600995929491939092919060040161563d565b600060405180830381865af4158015613049573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261307191908101906149d9565b6040518463ffffffff1660e01b815260040161308f93929190614b7c565b600060405180830381600087803b1580156130a957600080fd5b505af11580156130bd573d6000803e3d6000fd5b505050506000806130ed86633f9fdbe460e01b8786608001518760a00151604051602401610832939291906156e5565b6001600160a01b038816600090815260fb602090815260408083208a845290915281209294509092506131208282613e50565b60018201805461ffff1916905561313b600283016000613e8a565b613149600383016000613e50565b60048201600090556005820160006131619190613e50565b505060008581526101036020526040812061317b91613e50565b81156131bc5760405185906001600160a01b038816907f5f010dbbd6bf46aec8131c5456301a75cd688d3cca9bc8380c9e26301be2072990600090a36131fe565b856001600160a01b03167fc9d36d7a317cb116925d5cb66f0069fe825822fe23e9cf3f421c38cf444caa30826040516131f591906145dc565b60405180910390a25b50505061154e6001609755565b60026097540361325d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c5d565b6002609755565b84158061326f575081155b80613278575083155b80613281575080155b15612b6557604051637d6ba8a560e01b815260040160405180910390fd5b600081516000036132cd5760405163524e171160e01b81526020600482015260006024820152604401610c5d565b610104826040516132de919061570e565b908152604051908190036020019020546001600160a01b0316905080613319578160405163036c4d8760e11b8152600401610c5d91906145dc565b919050565b60fa5460009073__$f61eb90c6f674e787d51c07f105fa231e2$__9063a1ef9a989061335390859063ffffffff168188615720565b6040518363ffffffff1660e01b8152600401613370929190615542565b602060405180830381865af415801561338d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef919061574a565b600060606001600160a01b0384163b6133f957505060408051808201909152601481527318d85b1b081d1bc81b9bdb8b58dbdb9d1c9858dd60621b6020820152600090613496565b60005a9050846001600160a01b031684604051613416919061570e565b6000604051808303816000865af19150503d8060008114613453576040519150601f19603f3d011682016040523d82523d6000602084013e613458565b606091505b509093509150821580156134765750613472604082615767565b5a11155b156134945760405163b08ede0960e01b815260040160405180910390fd5b505b9250929050565b6040518060e001604052808780604001906134b891906148e0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001846002811115613504576135046142e9565b8152831515602082015260400161351b8688615789565b815260200161352a83806148e0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020838101359082015260400161357888806148e0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250506001600160a01b038a16815260fb602090815260408083208b83013584529091529020825190915081906135e290826153c3565b50602082015160018083018054909160ff199091169083600281111561360a5761360a6142e9565b021790555060408201516001820180549115156101000261ff001990921691909117905560608201518051613649916002840191602090910190613ea8565b506080820151600382019061365e90826153c3565b5060a0820151600482015560c0820151600582019061367d90826153c3565b5050506001600160a01b038716600081815260fc602090815260408083208a8301358085529083528184208054600167ffffffffffffffff19918216811790925586865260fd85528386208387528552838620805482168317905595855260fe845282852091855292528220805490931617909155859085908161370357613703614926565b905060200281019061371591906148e0565b60208089013560009081526101039091526040902091610dac919083615482565b6001609755565b610cfa6138b0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156137785761154e83613b70565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156137d2575060408051601f3d908101601f191682019092526137cf9181019061511a565b60015b6138355760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c5d565b60008051602061585883398151915281146138a45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c5d565b5061154e838383613c0c565b6033546001600160a01b03163314611f905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c5d565b60008290036139365760405163524e171160e01b81526020600482015260006024820152604401610c5d565b6001600160a01b03811661395d5760405163cbdd34cf60e01b815260040160405180910390fd5b8061010484846040516139719291906155af565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b60008181526101036020526040812080548291906139c290614fa2565b80601f01602080910402602001604051908101604052809291908181526020018280546139ee90614fa2565b8015613a3b5780601f10613a1057610100808354040283529160200191613a3b565b820191906000526020600020905b815481529060010190602001808311613a1e57829003601f168201915b505050505090508051600003613a67576040516363b99a9d60e11b815260048101849052602401610c5d565b6123ef8161329f565b60006001600160401b03831615801590613a935750826001600160401b03164210155b806123ef57506001600160401b038216158015906123ef5750506001600160401b0316431015919050565b606580546001600160a01b0319169055610cfa81613c31565b600054610100900460ff16613afe5760405162461bcd60e51b8152600401610c5d9061580c565b611f90613c83565b600054610100900460ff16613b2d5760405162461bcd60e51b8152600401610c5d9061580c565b611f90613cb3565b33600090815260fb60209081526040808320848452909152902060040154610cfa57604051631109bfb360e31b815260040160405180910390fd5b6001600160a01b0381163b613bdd5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c5d565b60008051602061585883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613c1583613cda565b600082511180613c225750805b1561154e5761292c8383613d1a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16613caa5760405162461bcd60e51b8152600401610c5d9061580c565b611f9033613abe565b600054610100900460ff166137365760405162461bcd60e51b8152600401610c5d9061580c565b613ce381613b70565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606123ef8383604051806060016040528060278152602001615878602791396060600080856001600160a01b031685604051613d57919061570e565b600060405180830381855af49150503d8060008114613d92576040519150601f19603f3d011682016040523d82523d6000602084013e613d97565b606091505b5091509150613da886838387613db2565b9695505050505050565b60608315613e21578251600003613e1a576001600160a01b0385163b613e1a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c5d565b5081612aba565b612aba8383815115613e365781518083602001fd5b8060405162461bcd60e51b8152600401610c5d91906145dc565b508054613e5c90614fa2565b6000825580601f10613e6c575050565b601f016020900490600052602060002090810190610cfa9190613efe565b5080546000825590600052602060002090810190610cfa9190613f13565b828054828255906000526020600020908101928215613eee579160200282015b82811115613eee5782518290613ede90826153c3565b5091602001919060010190613ec8565b50613efa929150613f13565b5090565b5b80821115613efa5760008155600101613eff565b80821115613efa576000613f278282613e50565b50600101613f13565b600060608284031215613f4257600080fd5b50919050565b60008083601f840112613f5a57600080fd5b5081356001600160401b03811115613f7157600080fd5b6020830191508360208260051b850101111561349657600080fd5b80356003811061331957600080fd5b8015158114610cfa57600080fd5b803561331981613f9b565b600060408284031215613f4257600080fd5b600080600080600080600060c0888a031215613fe157600080fd5b87356001600160401b0380821115613ff857600080fd5b6140048b838c01613f30565b985060208a013591508082111561401a57600080fd5b6140268b838c01613f48565b909850965086915061403a60408b01613f8c565b955061404860608b01613fa9565b945060808a013591508082111561405e57600080fd5b61406a8b838c01613f30565b935060a08a013591508082111561408057600080fd5b5061408d8a828b01613fb4565b91505092959891949750929550565b600080600080600080600060c0888a0312156140b757600080fd5b87356001600160401b03808211156140ce57600080fd5b6140da8b838c01613f30565b98506140e860208b01613f8c565b97506140f660408b01613fa9565b965060608a013591508082111561410c57600080fd5b6141188b838c01613f48565b909650945060808a013591508082111561405e57600080fd5b6001600160a01b0381168114610cfa57600080fd5b60006020828403121561415857600080fd5b81356123ef81614131565b60008083601f84011261417557600080fd5b5081356001600160401b0381111561418c57600080fd5b60208301915083602082850101111561349657600080fd5b60008060008060008060008060a0898b0312156141c057600080fd5b88356001600160401b03808211156141d757600080fd5b6141e38c838d01614163565b909a5098508891506141f760208c01613f8c565b975060408b0135915061420982613f9b565b90955060608a0135908082111561421f57600080fd5b61422b8c838d01613f48565b909650945060808b013591508082111561424457600080fd5b506142518b828c01614163565b999c989b5096995094979396929594505050565b6000806040838503121561427857600080fd5b823561428381614131565b946020939093013593505050565b60005b838110156142ac578181015183820152602001614294565b8381111561292c5750506000910152565b600081518084526142d5816020860160208601614291565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b6003811061430f5761430f6142e9565b9052565b6000815180845260208085019450848260051b860182860160005b858110156143585783830389526143468383516142bd565b9885019892509084019060010161432e565b5090979650505050505050565b602081526000825160e060208401526143826101008401826142bd565b9050602084015161439660408501826142ff565b506040840151151560608401526060840151601f19808584030160808601526143bf8383614313565b925060808601519150808584030160a08601526143dc83836142bd565b925060a086015160c086015260c08601519150808584030160e08601525061440482826142bd565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561444b5761444b61440d565b604052919050565b60006001600160401b0382111561446c5761446c61440d565b50601f01601f191660200190565b600061448d61448884614453565b614423565b90508281528383830111156144a157600080fd5b828260208301376000602084830101529392505050565b600080604083850312156144cb57600080fd5b82356144d681614131565b915060208301356001600160401b038111156144f157600080fd5b8301601f8101851361450257600080fd5b6145118582356020840161447a565b9150509250929050565b60008060006040848603121561453057600080fd5b83356001600160401b0381111561454657600080fd5b61455286828701614163565b909450925050602084013561456681614131565b809150509250925092565b600060e08284031215613f4257600080fd5b6000806040838503121561459657600080fd5b82356001600160401b03808211156145ad57600080fd5b6145b986838701614571565b935060208501359150808211156145cf57600080fd5b5061451185828601613fb4565b6020815260006123ef60208301846142bd565b600082601f83011261460057600080fd5b6123ef8383356020850161447a565b6000806040838503121561462257600080fd5b82356001600160401b0381111561463857600080fd5b614644858286016145ef565b925050602083013561465581614131565b809150509250929050565b60006020828403121561467257600080fd5b5035919050565b6000806020838503121561468c57600080fd5b82356001600160401b038111156146a257600080fd5b6146ae85828601614163565b90969095509350505050565b6000806000604084860312156146cf57600080fd5b8335925060208401356001600160401b038111156146ec57600080fd5b6146f886828701614163565b9497909650939450505050565b6000806000806060858703121561471b57600080fd5b84356001600160401b038082111561473257600080fd5b61473e88838901614571565b9550602087013591508082111561475457600080fd5b61476088838901614163565b9095509350604087013591508082111561477957600080fd5b5061478687828801613fb4565b91505092959194509250565b80356001600160401b038116811461331957600080fd5b600080600080606085870312156147bf57600080fd5b8435935060208501356001600160401b038111156147dc57600080fd5b6147e887828801614163565b90945092506147fb905060408601614792565b905092959194509250565b6000806000806000806080878903121561481f57600080fd5b86356001600160401b038082111561483657600080fd5b6148428a838b01614163565b90985096506020890135955060408901359450606089013591508082111561486957600080fd5b5061487689828a01614163565b979a9699509497509295939492505050565b60008060006060848603121561489d57600080fd5b83356148a881614131565b92506020840135915060408401356001600160401b038111156148ca57600080fd5b6148d686828701613fb4565b9150509250925092565b6000808335601e198436030181126148f757600080fd5b8301803591506001600160401b0382111561491157600080fd5b60200191503681900382131561349657600080fd5b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061497960408301858761493c565b9050826020830152949350505050565b600061499761448884614453565b90508281528383830111156149ab57600080fd5b6123ef836020830184614291565b600082601f8301126149ca57600080fd5b6123ef83835160208501614989565b6000602082840312156149eb57600080fd5b81516001600160401b03811115614a0157600080fd5b612aba848285016149b9565b600a811061430f5761430f6142e9565b6000808335601e19843603018112614a3457600080fd5b83016020810192503590506001600160401b03811115614a5357600080fd5b80360382131561349657600080fd5b614a6c818b614a0d565b60006020614a7c8184018c6142ff565b60c06040840152614a9160c084018a8c61493c565b8381036060850152878152818101600589901b820183018a60005b8b811015614ae657848303601f19018452614ac7828e614a1d565b614ad285828461493c565b958801959450505090850190600101614aac565b50508581036080870152614afb81898b61493c565b9450505050508260a08301529a9950505050505050505050565b6000808335601e19843603018112614b2c57600080fd5b83016020810192503590506001600160401b03811115614b4b57600080fd5b8060051b360382131561349657600080fd5b60008235603e19833603018112614b7357600080fd5b90910192915050565b6000606080835260a0808401614b928889614b15565b60408786018190529281905260059260c08089019083861b8a01018460005b85811015614cf2578b830360bf19018452813536889003607e19018112614bd757600080fd5b87016080848101614be88380614b15565b928752908290528b860191808c1b87018d0191908160005b82811015614c7057898503609f19018652614c1b8285614b5d565b614c258182614a1d565b8e8852614c358f8901828461493c565b9150506020614c4681840184614a1d565b9350888303828a0152614c5a83858361493c565b9982019998505093909301925050600101614c00565b5050505060209150614c8482840184614a1d565b87830384890152614c9683828461493c565b92505050614ca688840184614a1d565b8783038a890152614cb883828461493c565b92505050614cc88d840184614a1d565b93508682038e880152614cdc82858361493c565b9783019796505050929092019150600101614bb1565b505060208d013560808b015289810360208b0152614d10818d6142bd565b97505050878603818901525050505050613da881856142bd565b848152836020820152606060408201526000613da860608301848661493c565b818352600060208085019450848460051b86018460005b87811015614358578383038952614d788288614a1d565b614d8385828461493c565b9a87019a9450505090840190600101614d61565b614da1818b6142ff565b60c060208201526000614db860c083018a8c614d4a565b8860408401528281036060840152614dd181888a61493c565b905085608084015282810360a0840152614dec81858761493c565b9c9b505050505050505050505050565b600060208284031215614e0e57600080fd5b81516001600160401b03811115614e2457600080fd5b8201601f81018413614e3557600080fd5b612aba84825160208401614989565b60c081526000614e5760c083018b6142bd565b614e64602084018b6142ff565b88151560408401528281036060840152614e7f81888a614d4a565b90508281036080840152614e9481868861493c565b9150508260a08301529998505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60a081526000614f5660a083018a8c61493c565b614f63602084018a6142ff565b87151560408401528281036060840152614f7e818789614d4a565b90508281036080840152614f9381858761493c565b9b9a5050505050505050505050565b600181811c90821680614fb657607f821691505b602082108103613f4257634e487b7160e01b600052602260045260246000fd5b60008235603e19833603018112614fec57600080fd5b9190910192915050565b60006150028283614a1d565b6040855261501460408601828461493c565b915050602083013560208501528091505092915050565b6001600160401b038061503d83614792565b1683528061504d60208401614792565b166020840152505050565b6020815260006150688384614b5d565b60e0602084015261507d610100840182614ff6565b905061508c6020850185614b5d565b601f19808584030160408601526150a38383614ff6565b92506150b160408701614792565b91506001600160401b0380831660608701526150d06060880188614a1d565b9350828786030160808801526150e785858361493c565b9450506150fa60a087016080890161502b565b8061510760c08901614792565b1660e08701525050508091505092915050565b60006020828403121561512c57600080fd5b5051919050565b60006020828403121561514557600080fd5b6123ef82614792565b6001600160401b038481168252608082019061516d602084018661502b565b808416606084015250949350505050565b60006001600160401b038083168185168083038211156151ae57634e487b7160e01b600052601160045260246000fd5b01949350505050565b60006151c38283614b5d565b60e084526151d460e0850182614ff6565b90506151e36020840184614b5d565b84820360208601526151f58282614ff6565b91505061520460408401614792565b6001600160401b0380821660408701526152216060860186614a1d565b9250868403606088015261523684848361493c565b935050615249608087016080870161502b565b8061525660c08701614792565b1660c087015250508091505092915050565b6020815260006123ef60208301846151b7565b60006040828403121561528d57600080fd5b604051604081016001600160401b0382821081831117156152b0576152b061440d565b81604052829350845191506152c482613f9b565b908252602084015190808211156152da57600080fd5b506152e7858286016149b9565b6020830152505092915050565b6000806040838503121561530757600080fd5b82516001600160401b0381111561531d57600080fd5b6153298582860161527b565b925050602083015161465581613f9b565b8051151582526000602082015160406020850152612aba60408501826142bd565b6001600160401b03831681526040602082015260006123ec604083018461533a565b601f82111561154e57600081815260208120601f850160051c810160208610156153a45750805b601f850160051c820191505b81811015612b65578281556001016153b0565b81516001600160401b038111156153dc576153dc61440d565b6153f0816153ea8454614fa2565b8461537d565b602080601f831160018114615425576000841561540d5750858301515b600019600386901b1c1916600185901b178555612b65565b600085815260208120601f198616915b8281101561545457888601518255948401946001909101908401615435565b50858210156154725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160401b038311156154995761549961440d565b6154ad836154a78354614fa2565b8361537d565b6000601f8411600181146154e157600085156154c95750838201355b600019600387901b1c1916600186901b17835561553b565b600083815260209020601f19861690835b8281101561551257868501358255602094850194600190920191016154f2565b508682101561552f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6020815260006123ec60208301848661493c565b60006020828403121561556857600080fd5b81516001600160401b0381111561557e57600080fd5b612aba8482850161527b565b60408152600061559d60408301856151b7565b8281036020840152614404818561533a565b8183823760009101908152919050565b6060815260006155d360608301868861493c565b6001600160401b039485166020840152929093166040909101529392505050565b60608152600061560860608301868861493c565b6020830194909452506040015292915050565b60408152600061562e60408301856142bd565b90508260208301529392505050565b6156478188614a0d565b60006020615657818401896142ff565b60c0604084015261566b60c08401886142bd565b8381036060850152865180825282820190600581901b83018401848a0160005b838110156156b957601f198684030185526156a78383516142bd565b9487019492509086019060010161568b565b505086810360808801526156cd818a6142bd565b955050505050508260a0830152979650505050505050565b8381526060602082015260006156fe60608301856142bd565b9050826040830152949350505050565b60008251614fec818460208701614291565b6000808585111561573057600080fd5b8386111561573d57600080fd5b5050820193919092039150565b60006020828403121561575c57600080fd5b81516123ef81614131565b60008261578457634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160401b03808411156157a3576157a361440d565b8360051b60206157b4818301614423565b8681529185019181810190368411156157cc57600080fd5b865b84811015615800578035868111156157e65760008081fd5b6157f236828b016145ef565b8452509183019183016157ce565b50979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203f8f26d60b9aaf3863f5927452254ff0890e5a52ede93e9772d0c793e637860164736f6c634300080f0033"; + "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516158d46200011f60003960008181610c1f01528181610c68015281816113c201528181611402015261149501526158d46000f3fe6080604052600436106101c25760003560e01c8063715018a6116100f7578063b12f89be11610095578063c899e27211610064578063c899e2721461051e578063e30c39781461053e578063f2fde38b1461055c578063f90b8e961461057c57600080fd5b8063b12f89be14610486578063ba5a4d25146104a6578063c00fa7c0146104c6578063c3e1155c146104e657600080fd5b80637ab4339d116100d15780637ab4339d1461040857806381bc079b146104285780638da5cb5b146104485780639f59ae711461046657600080fd5b8063715018a6146103bc5780637774a6d3146103d157806379ba5097146103f357600080fd5b8063478222c211610164578063556d51781161013e578063556d51781461033c5780635d7adf961461035c5780636050b5f31461037c5780636b67055e1461039c57600080fd5b8063478222c2146102cd5780634f1ef2861461030657806352d1902d1461031957600080fd5b80633659cfe6116101a05780633659cfe614610240578063418925b71461026057806342852d2414610280578063429446b6146102ad57600080fd5b80631eb9fc86146101c75780632494546b146101e95780632bf5d19d14610220575b600080fd5b3480156101d357600080fd5b506101e76101e2366004613fc6565b61059c565b005b3480156101f557600080fd5b5060fa546102069063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b34801561022c57600080fd5b506101e761023b36600461409c565b610926565b34801561024c57600080fd5b506101e761025b366004614146565b610c15565b34801561026c57600080fd5b506101e761027b3660046141a4565b610cfd565b34801561028c57600080fd5b506102a061029b366004614265565b610db6565b6040516102179190614365565b3480156102b957600080fd5b506101e76102c8366004613fc6565b61110e565b3480156102d957600080fd5b50610105546102ee906001600160a01b031681565b6040516001600160a01b039091168152602001610217565b6101e76103143660046144b8565b6113b8565b34801561032557600080fd5b5061032e611488565b604051908152602001610217565b34801561034857600080fd5b506101e761035736600461451b565b61153b565b34801561036857600080fd5b506101e7610377366004614583565b611553565b34801561038857600080fd5b506101e7610397366004614583565b611863565b3480156103a857600080fd5b506101e76103b7366004614583565b611875565b3480156103c857600080fd5b506101e7611f7e565b3480156103dd57600080fd5b506103e6611f92565b60405161021791906145dc565b3480156103ff57600080fd5b506101e7612020565b34801561041457600080fd5b506101e761042336600461460f565b612097565b34801561043457600080fd5b506101e7610443366004614660565b612220565b34801561045457600080fd5b506033546001600160a01b03166102ee565b34801561047257600080fd5b506101e7610481366004614679565b6122e8565b34801561049257600080fd5b5061032e6104a13660046146ba565b61233d565b3480156104b257600080fd5b506101e76104c1366004614705565b6123f6565b3480156104d257600080fd5b506101e76104e1366004614679565b612932565b3480156104f257600080fd5b506105066105013660046147a9565b61296e565b6040516001600160401b039091168152602001610217565b34801561052a57600080fd5b506101e7610539366004614806565b612ac2565b34801561054a57600080fd5b506065546001600160a01b03166102ee565b34801561056857600080fd5b506101e7610577366004614146565b612b6d565b34801561058857600080fd5b506101e7610597366004614888565b612bde565b6105a461320b565b60028510156105c65760405163af0ba14d60e01b815260040160405180910390fd5b6105ec6105d388806148e0565b60208a01356105e286806148e0565b8760200135613264565b61064e8686600081811061060257610602614926565b905060200281019061061491906148e0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061329f92505050565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb36106818c806148e0565b8d602001356040518463ffffffff1660e01b81526004016106a493929190614965565b600060405180830381865af41580156106c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106e991908101906149d9565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60078a8e806040019061071691906148e0565b8f8f6107228e806148e0565b8f602001356040518a63ffffffff1660e01b815260040161074b99989796959493929190614a62565b600060405180830381865af4158015610768573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079091908101906149d9565b6040518463ffffffff1660e01b81526004016107ae93929190614b7c565b600060405180830381600087803b1580156107c857600080fd5b505af11580156107dc573d6000803e3d6000fd5b50600092506107f791506107f2905089806148e0565b61331e565b9050600080610869836301d08fc560e71b6020808e01359089013561081f60408b018b6148e0565b6040516024016108329493929190614d2a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526133b1565b9150915081156108ce57610882838b8b8b8b8b8b61349d565b826001600160a01b03167fcf8be9ab2b5edf8beb2c45abe8e0cc7646318ac19f6c3164ba2e19e93a8a32af8b602001356040516108c191815260200190565b60405180910390a2610910565b826001600160a01b03167f971a4433f5bff5f011728a4123aeeca4b5275ac20b013cf276e65510491ac26f8260405161090791906145dc565b60405180910390a25b50505061091d6001609755565b50505050505050565b61092e61320b565b6002831461094f5760405163af0ba14d60e01b815260040160405180910390fd5b61095c6105d388806148e0565b6109728484600081811061060257610602614926565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb36109a58c806148e0565b8d602001356040518463ffffffff1660e01b81526004016109c893929190614965565b600060405180830381865af41580156109e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0d91908101906149d9565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60068c8e8060400190610a3a91906148e0565b8d8d610a468e806148e0565b8f602001356040518a63ffffffff1660e01b8152600401610a6f99989796959493929190614a62565b600060405180830381865af4158015610a8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ab491908101906149d9565b6040518463ffffffff1660e01b8152600401610ad293929190614b7c565b600060405180830381600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b5060009250610b1691506107f2905089806148e0565b9050600080610b6c83634bdb559760e01b8b8a8a8f602001358b8060000190610b3f91906148e0565b8d602001358e8060400190610b5491906148e0565b60405160240161083299989796959493929190614d97565b915091508115610bdc57826001600160a01b03167ff910705a7a768eb5958f281a5f84cae8bffc5dd811ca5cd303dda140a423698c82806020019051810190610bb59190614dfc565b8b8b8b8b610bc38c806148e0565b8d602001356040516108c1989796959493929190614e44565b826001600160a01b03167f9e2fe55a3b54b57f82334c273f8d048cd7f05ad19c16cf334276a8c1fec4b6fd8260405161090791906145dc565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c665760405162461bcd60e51b8152600401610c5d90614eaa565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610caf600080516020615858833981519152546001600160a01b031690565b6001600160a01b031614610cd55760405162461bcd60e51b8152600401610c5d90614ef6565b610cde8161373d565b60408051600080825260208201909252610cfa91839190613745565b50565b610d0561320b565b600283141580610d13575080155b15610d3157604051637d6ba8a560e01b815260040160405180910390fd5b6000879003610d535760405163f61bbcf360e01b815260040160405180910390fd5b336001600160a01b03167f20fd8a5856711b18d00def4aa6abafbe00ce6d60795e015cc1cad35eb9b463598989898989898989604051610d9a989796959493929190614f42565b60405180910390a2610dac6001609755565b5050505050505050565b610dfc6040805160e08101909152606081526020810160008152602001600015158152602001606081526020016060815260200160008019168152602001606081525090565b6001600160a01b038316600090815260fb6020908152604080832085845290915290819020815160e08101909252805482908290610e3990614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6590614fa2565b8015610eb25780601f10610e8757610100808354040283529160200191610eb2565b820191906000526020600020905b815481529060010190602001808311610e9557829003601f168201915b5050509183525050600182015460209091019060ff166002811115610ed957610ed96142e9565b6002811115610eea57610eea6142e9565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b82821015610fd0578382906000526020600020018054610f4390614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6f90614fa2565b8015610fbc5780601f10610f9157610100808354040283529160200191610fbc565b820191906000526020600020905b815481529060010190602001808311610f9f57829003601f168201915b505050505081526020019060010190610f24565b505050508152602001600382018054610fe890614fa2565b80601f016020809104026020016040519081016040528092919081815260200182805461101490614fa2565b80156110615780601f1061103657610100808354040283529160200191611061565b820191906000526020600020905b81548152906001019060200180831161104457829003601f168201915b505050505081526020016004820154815260200160058201805461108490614fa2565b80601f01602080910402602001604051908101604052809291908181526020018280546110b090614fa2565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b505050505081525050905092915050565b61111661320b565b60028510156111385760405163af0ba14d60e01b815260040160405180910390fd5b6111456105d388806148e0565b61115b8686600081811061060257610602614926565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb361118e8c806148e0565b8d602001356040518463ffffffff1660e01b81526004016111b193929190614965565b600060405180830381865af41580156111ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111f691908101906149d9565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60088a8e806040019061122391906148e0565b8f8f61122f8e806148e0565b8f602001356040518a63ffffffff1660e01b815260040161125899989796959493929190614a62565b600060405180830381865af4158015611275573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261129d91908101906149d9565b6040518463ffffffff1660e01b81526004016112bb93929190614b7c565b600060405180830381600087803b1580156112d557600080fd5b505af11580156112e9573d6000803e3d6000fd5b50600092506112ff91506107f2905089806148e0565b90506000806113278363fad28a2460e01b8c6020013560405160240161083291815260200190565b91509150811561137f57611340838b8b8b8b8b8b61349d565b826001600160a01b03167fe80f571f70f7cabf9d7ac60ece08421be374117776c311c327a083ca398f802f8b602001356040516108c191815260200190565b826001600160a01b03167ff6a58ef30f66943749e8c29c661c84da143a1c8ed017f5faa92b509e0000875a8260405161090791906145dc565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114005760405162461bcd60e51b8152600401610c5d90614eaa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611449600080516020615858833981519152546001600160a01b031690565b6001600160a01b03161461146f5760405162461bcd60e51b8152600401610c5d90614ef6565b6114788261373d565b61148482826001613745565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115285760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c5d565b5060008051602061585883398151915290565b6115436138b0565b61154e83838361390a565b505050565b61155b61320b565b61157461156b6020840184614fd6565b602001356139a5565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b81526004016115ba9190615058565b600060405180830381865af41580156115d7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ff91908101906149d9565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da90611636908990600401615058565b602060405180830381865af4158015611653573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611677919061511a565b60405160200161168991815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016116b693929190614b7c565b600060405180830381600087803b1580156116d057600080fd5b505af11580156116e4573d6000803e3d6000fd5b5050505060006117078380602001906116fd9190614fd6565b6107f290806148e0565b6001600160a01b0381166000908152610100602090815260408220929350909190829061173690870187614fd6565b602001358152602001908152602001600020600085604001602081019061175d9190615133565b6001600160401b0316815260208101919091526040016000205460ff169050801561179b5760405163066c745760e01b815260040160405180910390fd5b6117c36117ae60e0860160c08701615133565b6117be60c0870160a08801615133565b613a70565b6117e0576040516312c9cc9f60e01b815260040160405180910390fd5b6117ed6020850185614fd6565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc61182c6060880160408901615133565b6080880161184060e08a0160c08b01615133565b60405161184f9392919061514e565b60405180910390a350506114846001609755565b61186b61320b565b6114846001609755565b61187d61320b565b61188d61156b6020840184614fd6565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b81526004016118d39190615058565b600060405180830381865af41580156118f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261191891908101906149d9565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da9061194f908990600401615058565b602060405180830381865af415801561196c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611990919061511a565b6040516020016119a291815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016119cf93929190614b7c565b600060405180830381600087803b1580156119e957600080fd5b505af11580156119fd573d6000803e3d6000fd5b505050506000611a168380602001906116fd9190614fd6565b6001600160a01b03811660009081526101006020908152604082209293509091908290611a4590870187614fd6565b6020013581526020019081526020016000206000856040016020810190611a6c9190615133565b6001600160401b0316815260208101919091526040016000205460ff1690508015611aaa5760405163066c745760e01b815260040160405180910390fd5b6001600160a01b03821660009081526101006020908152604082206001929091611ad690880188614fd6565b6020013581526020019081526020016000206000866040016020810190611afd9190615133565b6001600160401b031681526020810191909152604001600020805460ff191691151591909117905560026001600160a01b038316600090815260fb6020908152604082209190611b4f90880188614fd6565b60209081013582528101919091526040016000206001015460ff166002811115611b7b57611b7b6142e9565b03611c7a576001600160a01b038216600090815260fd6020908152604082209190611ba890870187614fd6565b60209081013582528101919091526040908101600020546001600160401b031690611bd99060608701908701615133565b6001600160401b031614611c005760405163362a414d60e01b815260040160405180910390fd5b611c106060850160408601615133565b611c1b90600161517e565b6001600160a01b038316600090815260fd6020908152604082209190611c4390880188614fd6565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b611c876020850185614fd6565b602001356001600160a01b0383167fde5b57e6566d68a30b0979431df3d5df6db3b9aa89f8820f595b9315bf86d067611cc66060880160408901615133565b6040516001600160401b03909116815260200160405180910390a3611cf46117ae60e0860160c08701615133565b15611d7757611d066020850185614fd6565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc611d456060880160408901615133565b60808801611d5960e08a0160c08b01615133565b604051611d689392919061514e565b60405180910390a3505061186b565b6040805180820190915260008152606060208201526000806000611dae86634dcc0aa660e01b8a6040516024016108329190615268565b915091508115611de75780806020019051810190611dcc91906152f4565b90945092508215611de25750505050505061186b565b611dff565b60408051808201909152600081526020810182905293505b6001600160a01b0386166000908152610101602090815260408220908290611e29908c018c614fd6565b60200135815260200190815260200160002060008a6040016020810190611e509190615133565b6001600160401b0316815260208101919091526040016000205460ff1690508015611e8e57604051637aa549d360e01b815260040160405180910390fd5b6001600160a01b03871660009081526101016020908152604082206001929091611eba908d018d614fd6565b60200135815260200190815260200160002060008b6040016020810190611ee19190615133565b6001600160401b03168152602080820192909252604001600020805460ff191692151592909217909155611f17908a018a614fd6565b602001356001600160a01b0388167fa32e6f42b1d63fb83ad73b009a6dbb9413d1da02e95b1bb08f081815eea8db20611f5660608d0160408e01615133565b88604051611f6592919061535b565b60405180910390a3505050505050506114846001609755565b611f866138b0565b611f906000613abe565b565b60f98054611f9f90614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054611fcb90614fa2565b80156120185780601f10611fed57610100808354040283529160200191612018565b820191906000526020600020905b815481529060010190602001808311611ffb57829003601f168201915b505050505081565b60655433906001600160a01b0316811461208e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610c5d565b610cfa81613abe565b600054600290610100900460ff161580156120b9575060005460ff8083169116105b61211c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c5d565b6000805461ffff191660ff83161761010017905561213861320b565b825160000361215a5760405163e8cf362360e01b815260040160405180910390fd5b6001600160a01b0382166121815760405163cbdd34cf60e01b815260040160405180910390fd5b612189613ad7565b612191613b06565b60f961219d84826153c3565b50825160fa805463ffffffff191663ffffffff90921691909117905561010580546001600160a01b0319166001600160a01b03841617905560016097556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b61222861320b565b61223181613b35565b33600090815260fb602090815260408083208484529091528120906122568282613e50565b60018201805461ffff19169055612271600283016000613e8a565b61227f600383016000613e50565b60048201600090556005820160006122979190613e50565b50506000818152610103602052604081206122b191613e50565b604051819033907f21372e37743553ba8e5f61239803174a827c7732d53ec8adcb76c6b3bb2c13f190600090a3610cfa6001609755565b6122f06138b0565b60008190036123125760405163e8cf362360e01b815260040160405180910390fd5b60f961231f828483615482565b5060fa805463ffffffff191663ffffffff9290921691909117905550565b600061237e83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061329f92505050565b6001600160a01b03166344c9af28856040518263ffffffff1660e01b81526004016123ab91815260200190565b602060405180830381865afa1580156123c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ec919061511a565b90505b9392505050565b6123fe61320b565b600061240d6116fd8680614fd6565b905061241c61156b8680614fd6565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__6311a7a373896040518263ffffffff1660e01b81526004016124629190615058565b600060405180830381865af415801561247f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124a791908101906149d9565b6040516374e9704560e01b815273__$d825222459c46c14afb2efe0967c30e98d$__906374e97045906124e0908b908b90600401615542565b602060405180830381865af41580156124fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612521919061511a565b60405160200161253391815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161256093929190614b7c565b600060405180830381600087803b15801561257a57600080fd5b505af115801561258e573d6000803e3d6000fd5b505050506001600160a01b038116600090815260ff60205260408120816125b58880614fd6565b60200135815260200190815260200160002060008760400160208101906125dc9190615133565b6001600160401b0316815260208101919091526040016000205460ff169050806126195760405163ca89746b60e01b815260040160405180910390fd5b6000806126b884637e1d42b560e01b8a73__$d825222459c46c14afb2efe0967c30e98d$__63360b8cd78c8c6040518363ffffffff1660e01b8152600401612662929190615542565b600060405180830381865af415801561267f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126a79190810190615556565b60405160240161083292919061558a565b9150915081156128dc5760026001600160a01b038516600090815260fb60205260408120906126e78b80614fd6565b60209081013582528101919091526040016000206001015460ff166002811115612713576127136142e9565b03612808576001600160a01b038416600090815260fe602052604081209061273b8a80614fd6565b60209081013582528101919091526040908101600020546001600160401b03169061276c9060608b01908b01615133565b6001600160401b0316146127935760405163362a414d60e01b815260040160405180910390fd5b6127a36060890160408a01615133565b6127ae90600161517e565b6001600160a01b038516600090815260fe60205260408120906127d18b80614fd6565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b038416600090815260ff602052604081209061282b8a80614fd6565b60200135815260200190815260200160002060008960400160208101906128529190615133565b6001600160401b031681526020810191909152604001600020805460ff1916905561287d8880614fd6565b602001356001600160a01b0385167fe46f6591236abe528fe47a3b281fb002524dadd3e62b1f317ed285d07273c3b16128bc60608c0160408d01615133565b6040516001600160401b03909116815260200160405180910390a361291e565b836001600160a01b03167f625eea143c9dae6915c809da47016c22d9cd006c3ace7c345c5cbcf57d3aefbc8260405161291591906145dc565b60405180910390a25b5050505061292c6001609755565b50505050565b61293a6138b0565b610104828260405161294d9291906155af565b90815260405190819003602001902080546001600160a01b03191690555050565b600061297861320b565b61298185613b35565b42826001600160401b0316116129aa5760405163551ea0fb60e11b815260040160405180910390fd5b5033600090815260fc602090815260408083208784529091528120546001600160401b0316908190036129f057604051631e510bfb60e21b815260040160405180910390fd5b33600090815260ff6020908152604080832088845282528083206001600160401b03851684529091529020805460ff19166001908117909155612a3490829061517e565b33600081815260fc602090815260408083208a845290915290819020805467ffffffffffffffff19166001600160401b03949094169390931790925590518691907fb5bff96e18da044e4e34510d16df9053b9f1920f6a960732e5aaf22fe9b8013690612aa89088908890879089906155bf565b60405180910390a3612aba6001609755565b949350505050565b612b0182828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061329f92505050565b6001600160a01b03166349ff245e878787876040518563ffffffff1660e01b8152600401612b3294939291906155f4565b600060405180830381600087803b158015612b4c57600080fd5b505af1158015612b60573d6000803e3d6000fd5b505050505b505050505050565b612b756138b0565b606580546001600160a01b0383166001600160a01b03199091168117909155612ba66033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b612be661320b565b6001600160a01b038316612c0d5760405163cbdd34cf60e01b815260040160405180910390fd5b6001600160a01b038316600090815260fb60209081526040808320858452909152808220815160e08101909252805482908290612c4990614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054612c7590614fa2565b8015612cc25780601f10612c9757610100808354040283529160200191612cc2565b820191906000526020600020905b815481529060010190602001808311612ca557829003601f168201915b5050509183525050600182015460209091019060ff166002811115612ce957612ce96142e9565b6002811115612cfa57612cfa6142e9565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b82821015612de0578382906000526020600020018054612d5390614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054612d7f90614fa2565b8015612dcc5780601f10612da157610100808354040283529160200191612dcc565b820191906000526020600020905b815481529060010190602001808311612daf57829003601f168201915b505050505081526020019060010190612d34565b505050508152602001600382018054612df890614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054612e2490614fa2565b8015612e715780601f10612e4657610100808354040283529160200191612e71565b820191906000526020600020905b815481529060010190602001808311612e5457829003601f168201915b5050505050815260200160048201548152602001600582018054612e9490614fa2565b80601f0160208091040260200160405190810160405280929190818152602001828054612ec090614fa2565b8015612f0d5780601f10612ee257610100808354040283529160200191612f0d565b820191906000526020600020905b815481529060010190602001808311612ef057829003601f168201915b5050509190925250505060a0810151909150612f3c57604051634d93b09d60e11b815260040160405180910390fd5b612f45836139a5565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__636f6547268560c00151886040518363ffffffff1660e01b8152600401612f9192919061561b565b600060405180830381865af4158015612fae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fd691908101906149d9565b602085015185516060870151608088015160a0890151604051631f621e1560e31b815273__$d825222459c46c14afb2efe0967c30e98d$__9563fb10f0a89561302c95600995929491939092919060040161563d565b600060405180830381865af4158015613049573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261307191908101906149d9565b6040518463ffffffff1660e01b815260040161308f93929190614b7c565b600060405180830381600087803b1580156130a957600080fd5b505af11580156130bd573d6000803e3d6000fd5b505050506000806130ed86633f9fdbe460e01b8786608001518760a00151604051602401610832939291906156e5565b6001600160a01b038816600090815260fb602090815260408083208a845290915281209294509092506131208282613e50565b60018201805461ffff1916905561313b600283016000613e8a565b613149600383016000613e50565b60048201600090556005820160006131619190613e50565b505060008581526101036020526040812061317b91613e50565b81156131bc5760405185906001600160a01b038816907f5f010dbbd6bf46aec8131c5456301a75cd688d3cca9bc8380c9e26301be2072990600090a36131fe565b856001600160a01b03167fc9d36d7a317cb116925d5cb66f0069fe825822fe23e9cf3f421c38cf444caa30826040516131f591906145dc565b60405180910390a25b50505061154e6001609755565b60026097540361325d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c5d565b6002609755565b84158061326f575081155b80613278575083155b80613281575080155b15612b6557604051637d6ba8a560e01b815260040160405180910390fd5b600081516000036132cd5760405163524e171160e01b81526020600482015260006024820152604401610c5d565b610104826040516132de919061570e565b908152604051908190036020019020546001600160a01b0316905080613319578160405163036c4d8760e11b8152600401610c5d91906145dc565b919050565b60fa5460009073__$f61eb90c6f674e787d51c07f105fa231e2$__9063a1ef9a989061335390859063ffffffff168188615720565b6040518363ffffffff1660e01b8152600401613370929190615542565b602060405180830381865af415801561338d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef919061574a565b600060606001600160a01b0384163b6133f957505060408051808201909152601481527318d85b1b081d1bc81b9bdb8b58dbdb9d1c9858dd60621b6020820152600090613496565b60005a9050846001600160a01b031684604051613416919061570e565b6000604051808303816000865af19150503d8060008114613453576040519150601f19603f3d011682016040523d82523d6000602084013e613458565b606091505b509093509150821580156134765750613472604082615767565b5a11155b156134945760405163b08ede0960e01b815260040160405180910390fd5b505b9250929050565b6040518060e001604052808780604001906134b891906148e0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001846002811115613504576135046142e9565b8152831515602082015260400161351b8688615789565b815260200161352a83806148e0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020838101359082015260400161357888806148e0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250506001600160a01b038a16815260fb602090815260408083208b83013584529091529020825190915081906135e290826153c3565b50602082015160018083018054909160ff199091169083600281111561360a5761360a6142e9565b021790555060408201516001820180549115156101000261ff001990921691909117905560608201518051613649916002840191602090910190613ea8565b506080820151600382019061365e90826153c3565b5060a0820151600482015560c0820151600582019061367d90826153c3565b5050506001600160a01b038716600081815260fc602090815260408083208a8301358085529083528184208054600167ffffffffffffffff19918216811790925586865260fd85528386208387528552838620805482168317905595855260fe845282852091855292528220805490931617909155859085908161370357613703614926565b905060200281019061371591906148e0565b60208089013560009081526101039091526040902091610dac919083615482565b6001609755565b610cfa6138b0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156137785761154e83613b70565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156137d2575060408051601f3d908101601f191682019092526137cf9181019061511a565b60015b6138355760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c5d565b60008051602061585883398151915281146138a45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c5d565b5061154e838383613c0c565b6033546001600160a01b03163314611f905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c5d565b60008290036139365760405163524e171160e01b81526020600482015260006024820152604401610c5d565b6001600160a01b03811661395d5760405163cbdd34cf60e01b815260040160405180910390fd5b8061010484846040516139719291906155af565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b60008181526101036020526040812080548291906139c290614fa2565b80601f01602080910402602001604051908101604052809291908181526020018280546139ee90614fa2565b8015613a3b5780601f10613a1057610100808354040283529160200191613a3b565b820191906000526020600020905b815481529060010190602001808311613a1e57829003601f168201915b505050505090508051600003613a67576040516363b99a9d60e11b815260048101849052602401610c5d565b6123ef8161329f565b60006001600160401b03831615801590613a935750826001600160401b03164210155b806123ef57506001600160401b038216158015906123ef5750506001600160401b0316431015919050565b606580546001600160a01b0319169055610cfa81613c31565b600054610100900460ff16613afe5760405162461bcd60e51b8152600401610c5d9061580c565b611f90613c83565b600054610100900460ff16613b2d5760405162461bcd60e51b8152600401610c5d9061580c565b611f90613cb3565b33600090815260fb60209081526040808320848452909152902060040154610cfa57604051631109bfb360e31b815260040160405180910390fd5b6001600160a01b0381163b613bdd5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c5d565b60008051602061585883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613c1583613cda565b600082511180613c225750805b1561154e5761292c8383613d1a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16613caa5760405162461bcd60e51b8152600401610c5d9061580c565b611f9033613abe565b600054610100900460ff166137365760405162461bcd60e51b8152600401610c5d9061580c565b613ce381613b70565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606123ef8383604051806060016040528060278152602001615878602791396060600080856001600160a01b031685604051613d57919061570e565b600060405180830381855af49150503d8060008114613d92576040519150601f19603f3d011682016040523d82523d6000602084013e613d97565b606091505b5091509150613da886838387613db2565b9695505050505050565b60608315613e21578251600003613e1a576001600160a01b0385163b613e1a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c5d565b5081612aba565b612aba8383815115613e365781518083602001fd5b8060405162461bcd60e51b8152600401610c5d91906145dc565b508054613e5c90614fa2565b6000825580601f10613e6c575050565b601f016020900490600052602060002090810190610cfa9190613efe565b5080546000825590600052602060002090810190610cfa9190613f13565b828054828255906000526020600020908101928215613eee579160200282015b82811115613eee5782518290613ede90826153c3565b5091602001919060010190613ec8565b50613efa929150613f13565b5090565b5b80821115613efa5760008155600101613eff565b80821115613efa576000613f278282613e50565b50600101613f13565b600060608284031215613f4257600080fd5b50919050565b60008083601f840112613f5a57600080fd5b5081356001600160401b03811115613f7157600080fd5b6020830191508360208260051b850101111561349657600080fd5b80356003811061331957600080fd5b8015158114610cfa57600080fd5b803561331981613f9b565b600060408284031215613f4257600080fd5b600080600080600080600060c0888a031215613fe157600080fd5b87356001600160401b0380821115613ff857600080fd5b6140048b838c01613f30565b985060208a013591508082111561401a57600080fd5b6140268b838c01613f48565b909850965086915061403a60408b01613f8c565b955061404860608b01613fa9565b945060808a013591508082111561405e57600080fd5b61406a8b838c01613f30565b935060a08a013591508082111561408057600080fd5b5061408d8a828b01613fb4565b91505092959891949750929550565b600080600080600080600060c0888a0312156140b757600080fd5b87356001600160401b03808211156140ce57600080fd5b6140da8b838c01613f30565b98506140e860208b01613f8c565b97506140f660408b01613fa9565b965060608a013591508082111561410c57600080fd5b6141188b838c01613f48565b909650945060808a013591508082111561405e57600080fd5b6001600160a01b0381168114610cfa57600080fd5b60006020828403121561415857600080fd5b81356123ef81614131565b60008083601f84011261417557600080fd5b5081356001600160401b0381111561418c57600080fd5b60208301915083602082850101111561349657600080fd5b60008060008060008060008060a0898b0312156141c057600080fd5b88356001600160401b03808211156141d757600080fd5b6141e38c838d01614163565b909a5098508891506141f760208c01613f8c565b975060408b0135915061420982613f9b565b90955060608a0135908082111561421f57600080fd5b61422b8c838d01613f48565b909650945060808b013591508082111561424457600080fd5b506142518b828c01614163565b999c989b5096995094979396929594505050565b6000806040838503121561427857600080fd5b823561428381614131565b946020939093013593505050565b60005b838110156142ac578181015183820152602001614294565b8381111561292c5750506000910152565b600081518084526142d5816020860160208601614291565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b6003811061430f5761430f6142e9565b9052565b6000815180845260208085019450848260051b860182860160005b858110156143585783830389526143468383516142bd565b9885019892509084019060010161432e565b5090979650505050505050565b602081526000825160e060208401526143826101008401826142bd565b9050602084015161439660408501826142ff565b506040840151151560608401526060840151601f19808584030160808601526143bf8383614313565b925060808601519150808584030160a08601526143dc83836142bd565b925060a086015160c086015260c08601519150808584030160e08601525061440482826142bd565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561444b5761444b61440d565b604052919050565b60006001600160401b0382111561446c5761446c61440d565b50601f01601f191660200190565b600061448d61448884614453565b614423565b90508281528383830111156144a157600080fd5b828260208301376000602084830101529392505050565b600080604083850312156144cb57600080fd5b82356144d681614131565b915060208301356001600160401b038111156144f157600080fd5b8301601f8101851361450257600080fd5b6145118582356020840161447a565b9150509250929050565b60008060006040848603121561453057600080fd5b83356001600160401b0381111561454657600080fd5b61455286828701614163565b909450925050602084013561456681614131565b809150509250925092565b600060e08284031215613f4257600080fd5b6000806040838503121561459657600080fd5b82356001600160401b03808211156145ad57600080fd5b6145b986838701614571565b935060208501359150808211156145cf57600080fd5b5061451185828601613fb4565b6020815260006123ef60208301846142bd565b600082601f83011261460057600080fd5b6123ef8383356020850161447a565b6000806040838503121561462257600080fd5b82356001600160401b0381111561463857600080fd5b614644858286016145ef565b925050602083013561465581614131565b809150509250929050565b60006020828403121561467257600080fd5b5035919050565b6000806020838503121561468c57600080fd5b82356001600160401b038111156146a257600080fd5b6146ae85828601614163565b90969095509350505050565b6000806000604084860312156146cf57600080fd5b8335925060208401356001600160401b038111156146ec57600080fd5b6146f886828701614163565b9497909650939450505050565b6000806000806060858703121561471b57600080fd5b84356001600160401b038082111561473257600080fd5b61473e88838901614571565b9550602087013591508082111561475457600080fd5b61476088838901614163565b9095509350604087013591508082111561477957600080fd5b5061478687828801613fb4565b91505092959194509250565b80356001600160401b038116811461331957600080fd5b600080600080606085870312156147bf57600080fd5b8435935060208501356001600160401b038111156147dc57600080fd5b6147e887828801614163565b90945092506147fb905060408601614792565b905092959194509250565b6000806000806000806080878903121561481f57600080fd5b86356001600160401b038082111561483657600080fd5b6148428a838b01614163565b90985096506020890135955060408901359450606089013591508082111561486957600080fd5b5061487689828a01614163565b979a9699509497509295939492505050565b60008060006060848603121561489d57600080fd5b83356148a881614131565b92506020840135915060408401356001600160401b038111156148ca57600080fd5b6148d686828701613fb4565b9150509250925092565b6000808335601e198436030181126148f757600080fd5b8301803591506001600160401b0382111561491157600080fd5b60200191503681900382131561349657600080fd5b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061497960408301858761493c565b9050826020830152949350505050565b600061499761448884614453565b90508281528383830111156149ab57600080fd5b6123ef836020830184614291565b600082601f8301126149ca57600080fd5b6123ef83835160208501614989565b6000602082840312156149eb57600080fd5b81516001600160401b03811115614a0157600080fd5b612aba848285016149b9565b600a811061430f5761430f6142e9565b6000808335601e19843603018112614a3457600080fd5b83016020810192503590506001600160401b03811115614a5357600080fd5b80360382131561349657600080fd5b614a6c818b614a0d565b60006020614a7c8184018c6142ff565b60c06040840152614a9160c084018a8c61493c565b8381036060850152878152818101600589901b820183018a60005b8b811015614ae657848303601f19018452614ac7828e614a1d565b614ad285828461493c565b958801959450505090850190600101614aac565b50508581036080870152614afb81898b61493c565b9450505050508260a08301529a9950505050505050505050565b6000808335601e19843603018112614b2c57600080fd5b83016020810192503590506001600160401b03811115614b4b57600080fd5b8060051b360382131561349657600080fd5b60008235603e19833603018112614b7357600080fd5b90910192915050565b6000606080835260a0808401614b928889614b15565b60408786018190529281905260059260c08089019083861b8a01018460005b85811015614cf2578b830360bf19018452813536889003607e19018112614bd757600080fd5b87016080848101614be88380614b15565b928752908290528b860191808c1b87018d0191908160005b82811015614c7057898503609f19018652614c1b8285614b5d565b614c258182614a1d565b8e8852614c358f8901828461493c565b9150506020614c4681840184614a1d565b9350888303828a0152614c5a83858361493c565b9982019998505093909301925050600101614c00565b5050505060209150614c8482840184614a1d565b87830384890152614c9683828461493c565b92505050614ca688840184614a1d565b8783038a890152614cb883828461493c565b92505050614cc88d840184614a1d565b93508682038e880152614cdc82858361493c565b9783019796505050929092019150600101614bb1565b505060208d013560808b015289810360208b0152614d10818d6142bd565b97505050878603818901525050505050613da881856142bd565b848152836020820152606060408201526000613da860608301848661493c565b818352600060208085019450848460051b86018460005b87811015614358578383038952614d788288614a1d565b614d8385828461493c565b9a87019a9450505090840190600101614d61565b614da1818b6142ff565b60c060208201526000614db860c083018a8c614d4a565b8860408401528281036060840152614dd181888a61493c565b905085608084015282810360a0840152614dec81858761493c565b9c9b505050505050505050505050565b600060208284031215614e0e57600080fd5b81516001600160401b03811115614e2457600080fd5b8201601f81018413614e3557600080fd5b612aba84825160208401614989565b60c081526000614e5760c083018b6142bd565b614e64602084018b6142ff565b88151560408401528281036060840152614e7f81888a614d4a565b90508281036080840152614e9481868861493c565b9150508260a08301529998505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60a081526000614f5660a083018a8c61493c565b614f63602084018a6142ff565b87151560408401528281036060840152614f7e818789614d4a565b90508281036080840152614f9381858761493c565b9b9a5050505050505050505050565b600181811c90821680614fb657607f821691505b602082108103613f4257634e487b7160e01b600052602260045260246000fd5b60008235603e19833603018112614fec57600080fd5b9190910192915050565b60006150028283614a1d565b6040855261501460408601828461493c565b915050602083013560208501528091505092915050565b6001600160401b038061503d83614792565b1683528061504d60208401614792565b166020840152505050565b6020815260006150688384614b5d565b60e0602084015261507d610100840182614ff6565b905061508c6020850185614b5d565b601f19808584030160408601526150a38383614ff6565b92506150b160408701614792565b91506001600160401b0380831660608701526150d06060880188614a1d565b9350828786030160808801526150e785858361493c565b9450506150fa60a087016080890161502b565b8061510760c08901614792565b1660e08701525050508091505092915050565b60006020828403121561512c57600080fd5b5051919050565b60006020828403121561514557600080fd5b6123ef82614792565b6001600160401b038481168252608082019061516d602084018661502b565b808416606084015250949350505050565b60006001600160401b038083168185168083038211156151ae57634e487b7160e01b600052601160045260246000fd5b01949350505050565b60006151c38283614b5d565b60e084526151d460e0850182614ff6565b90506151e36020840184614b5d565b84820360208601526151f58282614ff6565b91505061520460408401614792565b6001600160401b0380821660408701526152216060860186614a1d565b9250868403606088015261523684848361493c565b935050615249608087016080870161502b565b8061525660c08701614792565b1660c087015250508091505092915050565b6020815260006123ef60208301846151b7565b60006040828403121561528d57600080fd5b604051604081016001600160401b0382821081831117156152b0576152b061440d565b81604052829350845191506152c482613f9b565b908252602084015190808211156152da57600080fd5b506152e7858286016149b9565b6020830152505092915050565b6000806040838503121561530757600080fd5b82516001600160401b0381111561531d57600080fd5b6153298582860161527b565b925050602083015161465581613f9b565b8051151582526000602082015160406020850152612aba60408501826142bd565b6001600160401b03831681526040602082015260006123ec604083018461533a565b601f82111561154e57600081815260208120601f850160051c810160208610156153a45750805b601f850160051c820191505b81811015612b65578281556001016153b0565b81516001600160401b038111156153dc576153dc61440d565b6153f0816153ea8454614fa2565b8461537d565b602080601f831160018114615425576000841561540d5750858301515b600019600386901b1c1916600185901b178555612b65565b600085815260208120601f198616915b8281101561545457888601518255948401946001909101908401615435565b50858210156154725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160401b038311156154995761549961440d565b6154ad836154a78354614fa2565b8361537d565b6000601f8411600181146154e157600085156154c95750838201355b600019600387901b1c1916600186901b17835561553b565b600083815260209020601f19861690835b8281101561551257868501358255602094850194600190920191016154f2565b508682101561552f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6020815260006123ec60208301848661493c565b60006020828403121561556857600080fd5b81516001600160401b0381111561557e57600080fd5b612aba8482850161527b565b60408152600061559d60408301856151b7565b8281036020840152614404818561533a565b8183823760009101908152919050565b6060815260006155d360608301868861493c565b6001600160401b039485166020840152929093166040909101529392505050565b60608152600061560860608301868861493c565b6020830194909452506040015292915050565b60408152600061562e60408301856142bd565b90508260208301529392505050565b6156478188614a0d565b60006020615657818401896142ff565b60c0604084015261566b60c08401886142bd565b8381036060850152865180825282820190600581901b83018401848a0160005b838110156156b957601f198684030185526156a78383516142bd565b9487019492509086019060010161568b565b505086810360808801526156cd818a6142bd565b955050505050508260a0830152979650505050505050565b8381526060602082015260006156fe60608301856142bd565b9050826040830152949350505050565b60008251614fec818460208701614291565b6000808585111561573057600080fd5b8386111561573d57600080fd5b5050820193919092039150565b60006020828403121561575c57600080fd5b81516123ef81614131565b60008261578457634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160401b03808411156157a3576157a361440d565b8360051b60206157b4818301614423565b8681529185019181810190368411156157cc57600080fd5b865b84811015615800578035868111156157e65760008081fd5b6157f236828b016145ef565b8452509183019183016157ce565b50979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f7d6cd3243d9211a9414628a794bea35d0fd54a59e9e0a44dc6284e9de52400464736f6c634300080f0033"; type DispatcherConstructorParams = | [linkLibraryAddresses: DispatcherLibraryAddresses, signer?: Signer] diff --git a/src/evm/contracts/factories/DummyLightClient__factory.ts b/src/evm/contracts/factories/DummyLightClient__factory.ts index df53130e..1ce511df 100644 --- a/src/evm/contracts/factories/DummyLightClient__factory.ts +++ b/src/evm/contracts/factories/DummyLightClient__factory.ts @@ -253,7 +253,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040526000805460ff1916905534801561001a57600080fd5b5061040d8061002a6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806349ff245e1161005b57806349ff245e146100d957806357c1c5f4146100ef578063cb535ab5146100f7578063fdaab4e51461010a57600080fd5b80631b738a221461008257806336028d2a146100b557806344c9af28146100c5575b600080fd5b6100a2610090366004610170565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b60005b6040516100ac9190610189565b6100a26100d3366004610170565b50600090565b6100ed6100e73660046101b1565b50505050565b005b6100b8600081565b6100ed6101053660046102eb565b61011d565b6100ed610118366004610373565b610147565b826020013560000361014257604051636cb681eb60e01b815260040160405180910390fd5b505050565b816020013560000361016c57604051631e76ddb960e21b815260040160405180910390fd5b5050565b60006020828403121561018257600080fd5b5035919050565b60208101600383106101ab57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080606085870312156101c757600080fd5b843567ffffffffffffffff808211156101df57600080fd5b818701915087601f8301126101f357600080fd5b81358181111561020257600080fd5b88602082850101111561021457600080fd5b6020928301999098509187013596604001359550909350505050565b60006040828403121561024257600080fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261026f57600080fd5b813567ffffffffffffffff8082111561028a5761028a610248565b604051601f8301601f19908116603f011681019082821181831017156102b2576102b2610248565b816040528381528660208588010111156102cb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561030057600080fd5b833567ffffffffffffffff8082111561031857600080fd5b61032487838801610230565b9450602086013591508082111561033a57600080fd5b6103468783880161025e565b9350604086013591508082111561035c57600080fd5b506103698682870161025e565b9150509250925092565b6000806040838503121561038657600080fd5b823567ffffffffffffffff8082111561039e57600080fd5b6103aa86838701610230565b935060208501359150808211156103c057600080fd5b506103cd8582860161025e565b915050925092905056fea26469706673582212209d3ad59de5e00255b07e3daf87064182bd45e054b915828e5bd54725317284e664736f6c634300080f0033"; + "0x60806040526000805460ff1916905534801561001a57600080fd5b5061040d8061002a6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806349ff245e1161005b57806349ff245e146100d957806357c1c5f4146100ef578063cb535ab5146100f7578063fdaab4e51461010a57600080fd5b80631b738a221461008257806336028d2a146100b557806344c9af28146100c5575b600080fd5b6100a2610090366004610170565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b60005b6040516100ac9190610189565b6100a26100d3366004610170565b50600090565b6100ed6100e73660046101b1565b50505050565b005b6100b8600081565b6100ed6101053660046102eb565b61011d565b6100ed610118366004610373565b610147565b826020013560000361014257604051636cb681eb60e01b815260040160405180910390fd5b505050565b816020013560000361016c57604051631e76ddb960e21b815260040160405180910390fd5b5050565b60006020828403121561018257600080fd5b5035919050565b60208101600483106101ab57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080606085870312156101c757600080fd5b843567ffffffffffffffff808211156101df57600080fd5b818701915087601f8301126101f357600080fd5b81358181111561020257600080fd5b88602082850101111561021457600080fd5b6020928301999098509187013596604001359550909350505050565b60006040828403121561024257600080fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261026f57600080fd5b813567ffffffffffffffff8082111561028a5761028a610248565b604051601f8301601f19908116603f011681019082821181831017156102b2576102b2610248565b816040528381528660208588010111156102cb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561030057600080fd5b833567ffffffffffffffff8082111561031857600080fd5b61032487838801610230565b9450602086013591508082111561033a57600080fd5b6103468783880161025e565b9350604086013591508082111561035c57600080fd5b506103698682870161025e565b9150509250925092565b6000806040838503121561038657600080fd5b823567ffffffffffffffff8082111561039e57600080fd5b6103aa86838701610230565b935060208501359150808211156103c057600080fd5b506103cd8582860161025e565b915050925092905056fea2646970667358221220f5fdd531be48ab9d210a85685201f2cea5eadd016c2f72207b6c2130e5c3764c64736f6c634300080f0033"; type DummyLightClientConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/ILightClient.sol/IClientUpdates__factory.ts b/src/evm/contracts/factories/ILightClient.sol/IClientUpdates__factory.ts new file mode 100644 index 00000000..5044386a --- /dev/null +++ b/src/evm/contracts/factories/ILightClient.sol/IClientUpdates__factory.ts @@ -0,0 +1,61 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IClientUpdates, + IClientUpdatesInterface, +} from "../../ILightClient.sol/IClientUpdates"; + +const _abi = [ + { + type: "function", + name: "LIGHT_CLIENT_TYPE", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "enum LightClientType", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "updateClient", + inputs: [ + { + name: "proof", + type: "bytes", + internalType: "bytes", + }, + { + name: "height", + type: "uint256", + internalType: "uint256", + }, + { + name: "appHash", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class IClientUpdates__factory { + static readonly abi = _abi; + static createInterface(): IClientUpdatesInterface { + return new Interface(_abi) as IClientUpdatesInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IClientUpdates { + return new Contract(address, _abi, runner) as unknown as IClientUpdates; + } +} diff --git a/src/evm/contracts/factories/ILightClient__factory.ts b/src/evm/contracts/factories/ILightClient.sol/ILightClient__factory.ts similarity index 97% rename from src/evm/contracts/factories/ILightClient__factory.ts rename to src/evm/contracts/factories/ILightClient.sol/ILightClient__factory.ts index 79cd0ecd..6aecc2ad 100644 --- a/src/evm/contracts/factories/ILightClient__factory.ts +++ b/src/evm/contracts/factories/ILightClient.sol/ILightClient__factory.ts @@ -3,7 +3,10 @@ /* eslint-disable */ import { Contract, Interface, type ContractRunner } from "ethers"; -import type { ILightClient, ILightClientInterface } from "../ILightClient"; +import type { + ILightClient, + ILightClientInterface, +} from "../../ILightClient.sol/ILightClient"; const _abi = [ { diff --git a/src/evm/contracts/factories/ILightClient.sol/IMembershipVerifier__factory.ts b/src/evm/contracts/factories/ILightClient.sol/IMembershipVerifier__factory.ts new file mode 100644 index 00000000..b40507d4 --- /dev/null +++ b/src/evm/contracts/factories/ILightClient.sol/IMembershipVerifier__factory.ts @@ -0,0 +1,98 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IMembershipVerifier, + IMembershipVerifierInterface, +} from "../../ILightClient.sol/IMembershipVerifier"; + +const _abi = [ + { + type: "function", + name: "verifyMembership", + inputs: [ + { + name: "proof", + type: "tuple", + internalType: "struct Ics23Proof", + components: [ + { + name: "proof", + type: "tuple[]", + internalType: "struct OpIcs23Proof[]", + components: [ + { + name: "path", + type: "tuple[]", + internalType: "struct OpIcs23ProofPath[]", + components: [ + { + name: "prefix", + type: "bytes", + internalType: "bytes", + }, + { + name: "suffix", + type: "bytes", + internalType: "bytes", + }, + ], + }, + { + name: "key", + type: "bytes", + internalType: "bytes", + }, + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + { + name: "prefix", + type: "bytes", + internalType: "bytes", + }, + ], + }, + { + name: "height", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "key", + type: "bytes", + internalType: "bytes", + }, + { + name: "expectedValue", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class IMembershipVerifier__factory { + static readonly abi = _abi; + static createInterface(): IMembershipVerifierInterface { + return new Interface(_abi) as IMembershipVerifierInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IMembershipVerifier { + return new Contract( + address, + _abi, + runner + ) as unknown as IMembershipVerifier; + } +} diff --git a/src/evm/contracts/factories/ILightClient.sol/INonMembershipVerifier__factory.ts b/src/evm/contracts/factories/ILightClient.sol/INonMembershipVerifier__factory.ts new file mode 100644 index 00000000..486fc1a8 --- /dev/null +++ b/src/evm/contracts/factories/ILightClient.sol/INonMembershipVerifier__factory.ts @@ -0,0 +1,93 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + INonMembershipVerifier, + INonMembershipVerifierInterface, +} from "../../ILightClient.sol/INonMembershipVerifier"; + +const _abi = [ + { + type: "function", + name: "verifyNonMembership", + inputs: [ + { + name: "proof", + type: "tuple", + internalType: "struct Ics23Proof", + components: [ + { + name: "proof", + type: "tuple[]", + internalType: "struct OpIcs23Proof[]", + components: [ + { + name: "path", + type: "tuple[]", + internalType: "struct OpIcs23ProofPath[]", + components: [ + { + name: "prefix", + type: "bytes", + internalType: "bytes", + }, + { + name: "suffix", + type: "bytes", + internalType: "bytes", + }, + ], + }, + { + name: "key", + type: "bytes", + internalType: "bytes", + }, + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + { + name: "prefix", + type: "bytes", + internalType: "bytes", + }, + ], + }, + { + name: "height", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "key", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class INonMembershipVerifier__factory { + static readonly abi = _abi; + static createInterface(): INonMembershipVerifierInterface { + return new Interface(_abi) as INonMembershipVerifierInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): INonMembershipVerifier { + return new Contract( + address, + _abi, + runner + ) as unknown as INonMembershipVerifier; + } +} diff --git a/src/evm/contracts/factories/ILightClient.sol/index.ts b/src/evm/contracts/factories/ILightClient.sol/index.ts new file mode 100644 index 00000000..27e9aee9 --- /dev/null +++ b/src/evm/contracts/factories/ILightClient.sol/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IClientUpdates__factory } from "./IClientUpdates__factory"; +export { ILightClient__factory } from "./ILightClient__factory"; +export { IMembershipVerifier__factory } from "./IMembershipVerifier__factory"; +export { INonMembershipVerifier__factory } from "./INonMembershipVerifier__factory"; diff --git a/src/evm/contracts/factories/OptimisticLightClient__factory.ts b/src/evm/contracts/factories/OptimisticLightClient__factory.ts index d5fa95cf..bb931bcc 100644 --- a/src/evm/contracts/factories/OptimisticLightClient__factory.ts +++ b/src/evm/contracts/factories/OptimisticLightClient__factory.ts @@ -368,7 +368,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040526000805460ff1916600117905534801561001d57600080fd5b5060405161103638038061103683398101604081905261003c91610091565b63ffffffff92909216600355600480546001600160a01b039283166001600160a01b031991821617909155600580549290931691161790556100e7565b6001600160a01b038116811461008e57600080fd5b50565b6000806000606084860312156100a657600080fd5b835163ffffffff811681146100ba57600080fd5b60208501519093506100cb81610079565b60408501519092506100dc81610079565b809150509250925092565b610f40806100f66000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806363042720116100715780636304272014610181578063b9a1e87b1461018a578063cb535ab5146101ba578063d56ff842146101cd578063eb772058146101fa578063fdaab4e51461020d57600080fd5b80631b738a22146100b95780632b7ac3f3146100ec57806334b80a411461011757806344c9af281461013757806349ff245e1461015757806357c1c5f41461016c575b600080fd5b6100d96100c73660046105bc565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b6004546100ff906001600160a01b031681565b6040516001600160a01b0390911681526020016100e3565b6100d96101253660046105bc565b60026020526000908152604090205481565b6100d96101453660046105bc565b60009081526001602052604090205490565b61016a61016536600461061d565b610220565b005b610174600181565b6040516100e3919061066d565b6100d960035481565b61019d6101983660046105bc565b6103eb565b6040805193845260208401929092521515908201526060016100e3565b61016a6101c83660046106ad565b610406565b6100d96101db3660046105bc565b6000908152600160209081526040808320548352600290915290205490565b6005546100ff906001600160a01b031681565b61016a61021b366004610741565b6104ca565b60008061022f858701876109c0565b6000868152600160205260408120549294509092508190036103c2576004805460055460408051624dead360e51b815290516001600160a01b0393841694630a1bb8b594899489948c9492909116926309bd5a609282820192602092908290030181865afa1580156102a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c99190610a73565b600560009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561031c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103409190610a8c565b6040518663ffffffff1660e01b8152600401610360959493929190610b3e565b60006040518083038186803b15801561037857600080fd5b505afa15801561038c573d6000803e3d6000fd5b5050506000868152600160205260409020859055506003546103ae9042610c0b565b6000858152600260205260409020556103e2565b8381146103e25760405163f0cd4ed960e01b815260040160405180910390fd5b50505050505050565b60008060006103f98461056e565b9250925092509193909250565b60008061042061041b600160208a0135610c23565b61056e565b92505091508061044357604051631234d8dd60e01b815260040160405180910390fd5b600460009054906101000a90046001600160a01b03166001600160a01b031663c2f0329f8360001b888888888d6040518763ffffffff1660e01b815260040161049196959493929190610e92565b60006040518083038186803b1580156104a957600080fd5b505afa1580156104bd573d6000803e3d6000fd5b5050505050505050505050565b6000806104df61041b60016020880135610c23565b92505091508061050257604051631234d8dd60e01b815260040160405180910390fd5b60048054604051630a9b7b5d60e21b81526001600160a01b0390911691632a6ded7491610537918691899189918c9101610ed3565b60006040518083038186803b15801561054f57600080fd5b505afa158015610563573d6000803e3d6000fd5b505050505050505050565b600081815260016020908152604080832054808452600290925282205482918291819081158015906105ae57506000838152600260205260409020544210155b935093509350509193909250565b6000602082840312156105ce57600080fd5b5035919050565b60008083601f8401126105e757600080fd5b5081356001600160401b038111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b6000806000806060858703121561063357600080fd5b84356001600160401b0381111561064957600080fd5b610655878288016105d5565b90989097506020870135966040013595509350505050565b602081016003831061068f57634e487b7160e01b600052602160045260246000fd5b91905290565b6000604082840312156106a757600080fd5b50919050565b6000806000806000606086880312156106c557600080fd5b85356001600160401b03808211156106dc57600080fd5b6106e889838a01610695565b965060208801359150808211156106fe57600080fd5b61070a89838a016105d5565b9096509450604088013591508082111561072357600080fd5b50610730888289016105d5565b969995985093965092949392505050565b60008060006040848603121561075657600080fd5b83356001600160401b038082111561076d57600080fd5b61077987838801610695565b9450602086013591508082111561078f57600080fd5b5061079c868287016105d5565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156107e1576107e16107a9565b60405290565b604051601f8201601f191681016001600160401b038111828210171561080f5761080f6107a9565b604052919050565b6000601f838184011261082957600080fd5b823560206001600160401b0380831115610845576108456107a9565b8260051b6108548382016107e7565b938452868101830193838101908986111561086e57600080fd5b84890192505b858310156108fe5782358481111561088c5760008081fd5b8901603f81018b1361089e5760008081fd5b858101356040868211156108b4576108b46107a9565b6108c5828b01601f191689016107e7565b8281528d828486010111156108da5760008081fd5b828285018a8301376000928101890192909252508352509184019190840190610874565b9998505050505050505050565b6001600160401b038116811461092057600080fd5b50565b60006080828403121561093557600080fd5b604051608081016001600160401b038282108183111715610958576109586107a9565b81604052829350843591508082111561097057600080fd5b61097c86838701610817565b8352602085013591508082111561099257600080fd5b5061099f85828601610817565b60208301525060408301356040820152606083013560608201525092915050565b600080604083850312156109d357600080fd5b82356001600160401b03808211156109ea57600080fd5b90840190606082870312156109fe57600080fd5b610a066107bf565b823582811115610a1557600080fd5b610a2188828601610817565b8252506020830135602082015260408301359250610a3e8361090b565b826040820152809450506020850135915080821115610a5c57600080fd5b50610a6985828601610923565b9150509250929050565b600060208284031215610a8557600080fd5b5051919050565b600060208284031215610a9e57600080fd5b8151610aa98161090b565b9392505050565b600081518084526020808501808196508360051b810191508286016000805b86811015610b30578385038a5282518051808752835b81811015610b00578281018901518882018a01528801610ae5565b81811115610b10578489838a0101525b509a87019a601f01601f1916959095018601945091850191600101610acf565b509298975050505050505050565b60a0815260008651606060a0840152610b5b610100840182610ab0565b9050602088015160c08401526001600160401b0360408901511660e08401528281036020840152865160808252610b956080830182610ab0565b905060208801518282036020840152610bae8282610ab0565b91505060408801516040830152606088015160608301528092505050846040830152836060830152610beb60808301846001600160401b03169052565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610c1e57610c1e610bf5565b500190565b600082821015610c3557610c35610bf5565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e19843603018112610c7a57600080fd5b83016020810192503590506001600160401b03811115610c9957600080fd5b8060051b360382131561061657600080fd5b6000808335601e19843603018112610cc257600080fd5b83016020810192503590506001600160401b03811115610ce157600080fd5b80360382131561061657600080fd5b600060408301610d008384610c63565b604086528281845260608701905060608260051b88010193508260005b83811015610e7957888603605f1901835236859003607e1901823512610d4257600080fd5b8482350160808701610d548283610c63565b60808a528281845260a08b01905060a08260051b8c010193508260005b83811015610df2578c8603609f19018352813536869003603e19018112610d9757600080fd5b8501610da38180610cab565b60408952610db560408a018284610c3a565b915050610dc56020830183610cab565b925088820360208a0152610dda828483610c3a565b98505050602093840193929092019150600101610d71565b5050505050610e046020830183610cab565b89830360208b0152610e17838284610c3a565b92505050610e286040830183610cab565b89830360408b0152610e3b838284610c3a565b92505050610e4c6060830183610cab565b925088820360608a0152610e61828483610c3a565b98505050602093840193929092019150600101610d1d565b5050505050602083013560208501528091505092915050565b868152608060208201526000610eac608083018789610c3a565b8281036040840152610ebf818688610c3a565b905082810360608401526108fe8185610cf0565b848152606060208201526000610eed606083018587610c3a565b8281036040840152610eff8185610cf0565b97965050505050505056fea264697066735822122002704f39522eba69937029ffb29e1a22a80c40ab8029a5a547a981d55cb5e56b64736f6c634300080f0033"; + "0x60806040526000805460ff1916600117905534801561001d57600080fd5b5060405161103638038061103683398101604081905261003c91610091565b63ffffffff92909216600355600480546001600160a01b039283166001600160a01b031991821617909155600580549290931691161790556100e7565b6001600160a01b038116811461008e57600080fd5b50565b6000806000606084860312156100a657600080fd5b835163ffffffff811681146100ba57600080fd5b60208501519093506100cb81610079565b60408501519092506100dc81610079565b809150509250925092565b610f40806100f66000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806363042720116100715780636304272014610181578063b9a1e87b1461018a578063cb535ab5146101ba578063d56ff842146101cd578063eb772058146101fa578063fdaab4e51461020d57600080fd5b80631b738a22146100b95780632b7ac3f3146100ec57806334b80a411461011757806344c9af281461013757806349ff245e1461015757806357c1c5f41461016c575b600080fd5b6100d96100c73660046105bc565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b6004546100ff906001600160a01b031681565b6040516001600160a01b0390911681526020016100e3565b6100d96101253660046105bc565b60026020526000908152604090205481565b6100d96101453660046105bc565b60009081526001602052604090205490565b61016a61016536600461061d565b610220565b005b610174600181565b6040516100e3919061066d565b6100d960035481565b61019d6101983660046105bc565b6103eb565b6040805193845260208401929092521515908201526060016100e3565b61016a6101c83660046106ad565b610406565b6100d96101db3660046105bc565b6000908152600160209081526040808320548352600290915290205490565b6005546100ff906001600160a01b031681565b61016a61021b366004610741565b6104ca565b60008061022f858701876109c0565b6000868152600160205260408120549294509092508190036103c2576004805460055460408051624dead360e51b815290516001600160a01b0393841694630a1bb8b594899489948c9492909116926309bd5a609282820192602092908290030181865afa1580156102a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c99190610a73565b600560009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561031c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103409190610a8c565b6040518663ffffffff1660e01b8152600401610360959493929190610b3e565b60006040518083038186803b15801561037857600080fd5b505afa15801561038c573d6000803e3d6000fd5b5050506000868152600160205260409020859055506003546103ae9042610c0b565b6000858152600260205260409020556103e2565b8381146103e25760405163f0cd4ed960e01b815260040160405180910390fd5b50505050505050565b60008060006103f98461056e565b9250925092509193909250565b60008061042061041b600160208a0135610c23565b61056e565b92505091508061044357604051631234d8dd60e01b815260040160405180910390fd5b600460009054906101000a90046001600160a01b03166001600160a01b031663c2f0329f8360001b888888888d6040518763ffffffff1660e01b815260040161049196959493929190610e92565b60006040518083038186803b1580156104a957600080fd5b505afa1580156104bd573d6000803e3d6000fd5b5050505050505050505050565b6000806104df61041b60016020880135610c23565b92505091508061050257604051631234d8dd60e01b815260040160405180910390fd5b60048054604051630a9b7b5d60e21b81526001600160a01b0390911691632a6ded7491610537918691899189918c9101610ed3565b60006040518083038186803b15801561054f57600080fd5b505afa158015610563573d6000803e3d6000fd5b505050505050505050565b600081815260016020908152604080832054808452600290925282205482918291819081158015906105ae57506000838152600260205260409020544210155b935093509350509193909250565b6000602082840312156105ce57600080fd5b5035919050565b60008083601f8401126105e757600080fd5b5081356001600160401b038111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b6000806000806060858703121561063357600080fd5b84356001600160401b0381111561064957600080fd5b610655878288016105d5565b90989097506020870135966040013595509350505050565b602081016004831061068f57634e487b7160e01b600052602160045260246000fd5b91905290565b6000604082840312156106a757600080fd5b50919050565b6000806000806000606086880312156106c557600080fd5b85356001600160401b03808211156106dc57600080fd5b6106e889838a01610695565b965060208801359150808211156106fe57600080fd5b61070a89838a016105d5565b9096509450604088013591508082111561072357600080fd5b50610730888289016105d5565b969995985093965092949392505050565b60008060006040848603121561075657600080fd5b83356001600160401b038082111561076d57600080fd5b61077987838801610695565b9450602086013591508082111561078f57600080fd5b5061079c868287016105d5565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156107e1576107e16107a9565b60405290565b604051601f8201601f191681016001600160401b038111828210171561080f5761080f6107a9565b604052919050565b6000601f838184011261082957600080fd5b823560206001600160401b0380831115610845576108456107a9565b8260051b6108548382016107e7565b938452868101830193838101908986111561086e57600080fd5b84890192505b858310156108fe5782358481111561088c5760008081fd5b8901603f81018b1361089e5760008081fd5b858101356040868211156108b4576108b46107a9565b6108c5828b01601f191689016107e7565b8281528d828486010111156108da5760008081fd5b828285018a8301376000928101890192909252508352509184019190840190610874565b9998505050505050505050565b6001600160401b038116811461092057600080fd5b50565b60006080828403121561093557600080fd5b604051608081016001600160401b038282108183111715610958576109586107a9565b81604052829350843591508082111561097057600080fd5b61097c86838701610817565b8352602085013591508082111561099257600080fd5b5061099f85828601610817565b60208301525060408301356040820152606083013560608201525092915050565b600080604083850312156109d357600080fd5b82356001600160401b03808211156109ea57600080fd5b90840190606082870312156109fe57600080fd5b610a066107bf565b823582811115610a1557600080fd5b610a2188828601610817565b8252506020830135602082015260408301359250610a3e8361090b565b826040820152809450506020850135915080821115610a5c57600080fd5b50610a6985828601610923565b9150509250929050565b600060208284031215610a8557600080fd5b5051919050565b600060208284031215610a9e57600080fd5b8151610aa98161090b565b9392505050565b600081518084526020808501808196508360051b810191508286016000805b86811015610b30578385038a5282518051808752835b81811015610b00578281018901518882018a01528801610ae5565b81811115610b10578489838a0101525b509a87019a601f01601f1916959095018601945091850191600101610acf565b509298975050505050505050565b60a0815260008651606060a0840152610b5b610100840182610ab0565b9050602088015160c08401526001600160401b0360408901511660e08401528281036020840152865160808252610b956080830182610ab0565b905060208801518282036020840152610bae8282610ab0565b91505060408801516040830152606088015160608301528092505050846040830152836060830152610beb60808301846001600160401b03169052565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610c1e57610c1e610bf5565b500190565b600082821015610c3557610c35610bf5565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e19843603018112610c7a57600080fd5b83016020810192503590506001600160401b03811115610c9957600080fd5b8060051b360382131561061657600080fd5b6000808335601e19843603018112610cc257600080fd5b83016020810192503590506001600160401b03811115610ce157600080fd5b80360382131561061657600080fd5b600060408301610d008384610c63565b604086528281845260608701905060608260051b88010193508260005b83811015610e7957888603605f1901835236859003607e1901823512610d4257600080fd5b8482350160808701610d548283610c63565b60808a528281845260a08b01905060a08260051b8c010193508260005b83811015610df2578c8603609f19018352813536869003603e19018112610d9757600080fd5b8501610da38180610cab565b60408952610db560408a018284610c3a565b915050610dc56020830183610cab565b925088820360208a0152610dda828483610c3a565b98505050602093840193929092019150600101610d71565b5050505050610e046020830183610cab565b89830360208b0152610e17838284610c3a565b92505050610e286040830183610cab565b89830360408b0152610e3b838284610c3a565b92505050610e4c6060830183610cab565b925088820360608a0152610e61828483610c3a565b98505050602093840193929092019150600101610d1d565b5050505050602083013560208501528091505092915050565b868152608060208201526000610eac608083018789610c3a565b8281036040840152610ebf818688610c3a565b905082810360608401526108fe8185610cf0565b848152606060208201526000610eed606083018587610c3a565b8281036040840152610eff8185610cf0565b97965050505050505056fea26469706673582212207a6fe856e998c1fec10e0a51faf6cd486f66431396a3937518c8c08b53db94ab64736f6c634300080f0033"; type OptimisticLightClientConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/OptimisticProofVerifier__factory.ts b/src/evm/contracts/factories/OptimisticProofVerifier__factory.ts index c712f536..af1da628 100644 --- a/src/evm/contracts/factories/OptimisticProofVerifier__factory.ts +++ b/src/evm/contracts/factories/OptimisticProofVerifier__factory.ts @@ -312,7 +312,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162002df638038062002df683398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b612d5a806200009c6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630a1bb8b5146100515780632a6ded741461006657806359c1b56b14610079578063c2f0329f146100a8575b600080fd5b61006461005f3660046124f8565b6100bb565b005b6100646100743660046125ec565b6103bb565b60005461008c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100646100b636600461265e565b6103d4565b6100cb60608601604087016126f9565b6001600160401b0316816001600160401b0316146100fc57604051630fd8993960e21b815260040160405180910390fd5b6101176101098680612714565b610112916127a3565b6105be565b80519060200120821461013c5760405162fa512960e01b815260040160405180910390fd5b6101468580612714565b600881811061015757610157612877565b9050602002810190610169919061288d565b6040516101779291906128d3565b60405180910390206101a386604001602081019061019591906126f9565b6001600160401b03166105ff565b80519060200120146101c857604051633395483760e01b815260040160405180910390fd5b6101d28580612714565b60038181106101e3576101e3612877565b90506020028101906101f5919061288d565b6040516102039291906128d3565b6040518091039020610239866020013560405160200161022591815260200190565b604051602081830303815290604052610618565b805190602001201461025e576040516313d643bd60e21b815260040160405180910390fd5b6000805460405160609190911b6bffffffffffffffffffffffff191660208201526102c5906102c0906102bb9060340160408051601f198184030181529190526102a88980612714565b6102b1916127a3565b8a60200135610671565b610694565b6106f0565b9050600061033a86604001356040516020016102e391815260200190565b60408051601f198184030181529190526103006020890189612714565b610309916127a3565b61032c8560028151811061031f5761031f612877565b6020026020010151610913565b610335906128e3565b610671565b905061034d61034882610694565b610913565b610356906128e3565b6040805160006020820181905291810188905260608082019290925290880135608082015260a00160405160208183030381529060405280519060200120146103b2576040516330d26e5760e11b815260040160405180910390fd5b50505050505050565b604051632974974360e01b815260040160405180910390fd5b6103de8180612714565b60008181106103ef576103ef612877565b90506020028101906104019190612907565b61040f90602081019061288d565b60405161041d9291906128d3565b604051809103902085856040516104359291906128d3565b60405180910390201461045b5760405163026a287560e51b815260040160405180910390fd5b6104658180612714565b600081811061047657610476612877565b90506020028101906104889190612907565b61049690604081019061288d565b6040516104a49291906128d3565b604051809103902083836040516104bc9291906128d3565b6040518091039020146104e2576040516310d9300f60e11b815260040160405180910390fd5b6105176104ef8280612714565b600081811061050057610500612877565b90506020028101906105129190612907565b610a36565b6105218280612714565b600181811061053257610532612877565b90506020028101906105449190612907565b61055290604081019061288d565b61055b91612927565b1461057957604051636589f0e160e11b815260040160405180910390fd5b6105976105868280612714565b600181811061050057610500612877565b86146105b6576040516392cb8fbb60e01b815260040160405180910390fd5b505050505050565b60606105c982610c5a565b90506105d7815160c0610d93565b816040516020016105e9929190612980565b6040516020818303038152906040529050919050565b606061061261060d83610f3e565b610618565b92915050565b606081516001148015610645575060808260008151811061063b5761063b612877565b016020015160f81c105b1561064e575090565b61065a82516080610d93565b826040516020016105e9929190612980565b919050565b6060600061067e8561106a565b905061068b818585611086565b95945050505050565b604080518082019091526000808252602082015260008251116106d25760405162461bcd60e51b81526004016106c99061299d565b60405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061070085611916565b91945092509050600181600181111561071b5761071b612a0d565b1461078e5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016106c9565b845161079a8385612a39565b146108025760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016106c9565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816108195790505093506000835b86518110156109075760008061088c6040518060400160405280858c600001516108709190612a51565b8152602001858c602001516108859190612a39565b9052611916565b5091509150604051806040016040528083836108a89190612a39565b8152602001848b602001516108bd9190612a39565b8152508885815181106108d2576108d2612877565b60209081029190910101526108e8600185612a39565b93506108f48183612a39565b6108fe9084612a39565b92505050610846565b50845250919392505050565b6060600080600061092385611916565b91945092509050600081600181111561093e5761093e612a0d565b146109b15760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016106c9565b6109bb8284612a39565b855114610a275760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016106c9565b61068b85602001518484611fd9565b6000806002610a48604085018561288d565b604051610a569291906128d3565b602060405180830381855afa158015610a73573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610a969190612a68565b90506002610aa7606085018561288d565b610abe610ab7602088018861288d565b905061206c565b610acb602088018861288d565b610ad5602061206c565b87604051602001610aec9796959493929190612a81565b60408051601f1981840301815290829052610b0691612ac5565b602060405180830381855afa158015610b23573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b469190612a68565b915060005b610b558480612714565b9050811015610c53576002610b6a8580612714565b83818110610b7a57610b7a612877565b9050602002810190610b8c9190612ad1565b610b96908061288d565b85610ba18880612714565b86818110610bb157610bb1612877565b9050602002810190610bc39190612ad1565b610bd190602081019061288d565b604051602001610be5959493929190612ae7565b60408051601f1981840301815290829052610bff91612ac5565b602060405180830381855afa158015610c1c573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c3f9190612a68565b925080610c4b81612b0f565b915050610b4b565b5050919050565b60608151600003610c7e5760408051600080825260208201909252905b5092915050565b6000805b8351811015610cc557838181518110610c9d57610c9d612877565b60200260200101515182610cb19190612a39565b915080610cbd81612b0f565b915050610c82565b816001600160401b03811115610cdd57610cdd61275d565b6040519080825280601f01601f191660200182016040528015610d07576020820181803683370190505b50925060009050602083015b8451821015610d8b576000858381518110610d3057610d30612877565b602002602001015190506000602082019050610d4e838284516120db565b868481518110610d6057610d60612877565b60200260200101515183610d749190612a39565b925050508180610d8390612b0f565b925050610d13565b505050919050565b60606038831015610df95760408051600180825281830190925290602082018180368337019050509050610dc78284612b28565b60f81b81600081518110610ddd57610ddd612877565b60200101906001600160f81b031916908160001a905350610612565b600060015b610e088186612b63565b15610e2e5781610e1781612b0f565b9250610e27905061010082612b77565b9050610dfe565b610e39826001612a39565b6001600160401b03811115610e5057610e5061275d565b6040519080825280601f01601f191660200182016040528015610e7a576020820181803683370190505b509250610e878483612b28565b610e92906037612b28565b60f81b83600081518110610ea857610ea8612877565b60200101906001600160f81b031916908160001a905350600190505b818111610f3657610100610ed88284612a51565b610ee490610100612c7a565b610eee9087612b63565b610ef89190612c86565b60f81b838281518110610f0d57610f0d612877565b60200101906001600160f81b031916908160001a90535080610f2e81612b0f565b915050610ec4565b505092915050565b6060600082604051602001610f5591815260200190565b604051602081830303815290604052905060005b6020811015610fac57818181518110610f8457610f84612877565b01602001516001600160f81b031916600003610fac5780610fa481612b0f565b915050610f69565b610fb7816020612a51565b6001600160401b03811115610fce57610fce61275d565b6040519080825280601f01601f191660200182016040528015610ff8576020820181803683370190505b50925060005b8351811015610d8b57828261101281612b0f565b93508151811061102457611024612877565b602001015160f81c60f81b84828151811061104157611041612877565b60200101906001600160f81b031916908160001a9053508061106281612b0f565b915050610ffe565b606081805190602001206040516020016105e991815260200190565b606060008451116110d15760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106c9565b60006110dc84612138565b905060006110e98661221c565b905060008460405160200161110091815260200190565b60405160208183030381529060405290506000805b84518110156118b857600085828151811061113257611132612877565b6020026020010151905084518311156111a45760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106c9565b8260000361124357805180516020918201206040516111f2926111cc92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61123e5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106c9565b611339565b8051516020116112c9578051805160209182012060405161126d926111cc92910190815260200190565b61123e5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106c9565b8051845160208087019190912082519190920120146113395760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106c9565b61134560106001612a39565b816020015151036114e0578451830361147857611372816020015160108151811061031f5761031f612877565b965060008751116113eb5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106c9565b600186516113f99190612a51565b821461146d5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106c9565b50505050505061190f565b600085848151811061148c5761148c612877565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106114b7576114b7612877565b602002602001015190506114ca8161227f565b95506114d7600186612a39565b945050506118a5565b60028160200151510361184c5760006114f8826122a4565b905060008160008151811061150f5761150f612877565b016020015160f81c90506000611526600283612c9a565b611531906002612cbc565b90506000611542848360ff166122c8565b905060006115508a896122c8565b9050600061155e83836122fe565b9050808351146115d65760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106c9565b60ff8516600214806115eb575060ff85166003145b1561178c57808251146116665760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106c9565b611680876020015160018151811061031f5761031f612877565b9c5060008d51116116f95760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106c9565b60018c516117079190612a51565b881461177b5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106c9565b50505050505050505050505061190f565b60ff8516158061179f575060ff85166001145b156117de576117cb87602001516001815181106117be576117be612877565b602002602001015161227f565b99506117d7818a612a39565b9850611841565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106c9565b5050505050506118a5565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106c9565b50806118b081612b0f565b915050611115565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106c9565b9392505050565b60008060008084600001511161193e5760405162461bcd60e51b81526004016106c99061299d565b6020840151805160001a607f8111611963576000600160009450945094505050611fd2565b60b78111611ac0576000611978608083612a51565b9050808760000151116119f85760405162461bcd60e51b815260206004820152604e6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016106c9565b6001838101516001600160f81b0319169082141580611a255750600160ff1b6001600160f81b0319821610155b611aad5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016106c9565b5060019550935060009250611fd2915050565b60bf8111611d01576000611ad560b783612a51565b905080876000015111611b585760405162461bcd60e51b81526020600482015260516024820152600080516020612d0583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016106c9565b60018301516001600160f81b0319166000819003611bdf5760405162461bcd60e51b815260206004820152604a6024820152600080516020612d0583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016106c9565b600184015160088302610100031c60378111611c625760405162461bcd60e51b81526020600482015260486024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016106c9565b611c6c8184612a39565b895111611ce45760405162461bcd60e51b815260206004820152604c6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016106c9565b611cef836001612a39565b9750955060009450611fd29350505050565b60f78111611da3576000611d1660c083612a51565b905080876000015111611d925760405162461bcd60e51b815260206004820152604a6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016106c9565b600195509350849250611fd2915050565b6000611db060f783612a51565b905080876000015111611e2f5760405162461bcd60e51b815260206004820152604d6024820152600080516020612d0583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016106c9565b60018301516001600160f81b0319166000819003611eb45760405162461bcd60e51b81526020600482015260486024820152600080516020612d0583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016106c9565b600184015160088302610100031c60378111611f355760405162461bcd60e51b81526020600482015260466024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016106c9565b611f3f8184612a39565b895111611fb55760405162461bcd60e51b815260206004820152604a6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016106c9565b611fc0836001612a39565b9750955060019450611fd29350505050565b9193909250565b6060816001600160401b03811115611ff357611ff361275d565b6040519080825280601f01601f19166020018201604052801561201d576020820181803683370190505b509050811561190f5760006120328486612a39565b90506020820160005b8481101561205357828101518282015260200161203b565b84811115612062576000858301525b5050509392505050565b6060805b608083106120ae578083607f1660801760f81b604051602001612094929190612cdf565b60408051601f198184030190525260079290921c91612070565b808360f81b6040516020016120c4929190612cdf565b604051602081830303815290604052915050919050565b8282825b6020811061211757815183526120f6602084612a39565b9250612103602083612a39565b9150612110602082612a51565b90506120df565b905182516020929092036101000a6000190180199091169116179052505050565b8051606090806001600160401b038111156121555761215561275d565b60405190808252806020026020018201604052801561219a57816020015b60408051808201909152606080825260208201528152602001906001900390816121735790505b50915060005b81811015610c535760405180604001604052808583815181106121c5576121c5612877565b602002602001015181526020016121f48684815181106121e7576121e7612877565b602002602001015161237b565b81525083828151811061220957612209612877565b60209081029190910101526001016121a0565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015612274578060011b82018184015160001a8060041c8253600f811660018301535050600101612246565b509295945050505050565b6060602082600001511061229b5761229682610913565b610612565b61061282612389565b60606106126122c3836020015160008151811061031f5761031f612877565b61221c565b6060825182106122e75750604080516020810190915260008152610612565b61190f83838486516122f99190612a51565b61239f565b6000808251845110612311578251612314565b83515b90505b808210801561236b575082828151811061233357612333612877565b602001015160f81c60f81b6001600160f81b03191684838151811061235a5761235a612877565b01602001516001600160f81b031916145b15610c7757816001019150612317565b60606106126102c083610694565b6060610612826020015160008460000151611fd9565b60608182601f0110156123e55760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106c9565b8282840110156124285760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106c9565b8183018451101561246f5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106c9565b60608215801561248e57604051915060008252602082016040526124d8565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156124c75780518352602092830192016124af565b5050858452601f01601f1916604052505b50949350505050565b80356001600160401b038116811461066c57600080fd5b600080600080600060a0868803121561251057600080fd5b85356001600160401b038082111561252757600080fd5b908701906060828a03121561253b57600080fd5b9095506020870135908082111561255157600080fd5b5086016080818903121561256457600080fd5b93506040860135925060608601359150612580608087016124e1565b90509295509295909350565b60008083601f84011261259e57600080fd5b5081356001600160401b038111156125b557600080fd5b6020830191508360208285010111156125cd57600080fd5b9250929050565b6000604082840312156125e657600080fd5b50919050565b6000806000806060858703121561260257600080fd5b8435935060208501356001600160401b038082111561262057600080fd5b61262c8883890161258c565b9095509350604087013591508082111561264557600080fd5b50612652878288016125d4565b91505092959194509250565b6000806000806000806080878903121561267757600080fd5b8635955060208701356001600160401b038082111561269557600080fd5b6126a18a838b0161258c565b909750955060408901359150808211156126ba57600080fd5b6126c68a838b0161258c565b909550935060608901359150808211156126df57600080fd5b506126ec89828a016125d4565b9150509295509295509295565b60006020828403121561270b57600080fd5b61190f826124e1565b6000808335601e1984360301811261272b57600080fd5b8301803591506001600160401b0382111561274557600080fd5b6020019150600581901b36038213156125cd57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561279b5761279b61275d565b604052919050565b60006001600160401b03808411156127bd576127bd61275d565b8360051b60206127ce818301612773565b8681529185019181810190368411156127e657600080fd5b865b8481101561286b578035868111156128005760008081fd5b8801601f36818301126128135760008081fd5b8135888111156128255761282561275d565b612836818301601f19168801612773565b9150808252368782850101111561284d5760008081fd5b808784018884013760009082018701528452509183019183016127e8565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126128a457600080fd5b8301803591506001600160401b038211156128be57600080fd5b6020019150368190038213156125cd57600080fd5b8183823760009101908152919050565b805160208083015191908110156125e65760001960209190910360031b1b16919050565b60008235607e1983360301811261291d57600080fd5b9190910192915050565b8035602083101561061257600019602084900360031b1b1692915050565b6000815160005b81811015612966576020818501810151868301520161294c565b81811115612975576000828601525b509290920192915050565b600061299561298f8386612945565b84612945565b949350505050565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612a4c57612a4c612a23565b500190565b600082821015612a6357612a63612a23565b500390565b600060208284031215612a7a57600080fd5b5051919050565b86888237600087820160008152612a988189612945565b9050858782376000908601908152612ab08186612945565b93845250506020909101979650505050505050565b600061190f8284612945565b60008235603e1983360301811261291d57600080fd5b8486823760008582018581528385602083013760009301602001928352509095945050505050565b600060018201612b2157612b21612a23565b5060010190565b600060ff821660ff84168060ff03821115612b4557612b45612a23565b019392505050565b634e487b7160e01b600052601260045260246000fd5b600082612b7257612b72612b4d565b500490565b6000816000190483118215151615612b9157612b91612a23565b500290565b600181815b80851115612bd1578160001904821115612bb757612bb7612a23565b80851615612bc457918102915b93841c9390800290612b9b565b509250929050565b600082612be857506001610612565b81612bf557506000610612565b8160018114612c0b5760028114612c1557612c31565b6001915050610612565b60ff841115612c2657612c26612a23565b50506001821b610612565b5060208310610133831016604e8410600b8410161715612c54575081810a610612565b612c5e8383612b96565b8060001904821115612c7257612c72612a23565b029392505050565b600061190f8383612bd9565b600082612c9557612c95612b4d565b500690565b600060ff831680612cad57612cad612b4d565b8060ff84160691505092915050565b600060ff821660ff841680821015612cd657612cd6612a23565b90039392505050565b6000612ceb8285612945565b6001600160f81b0319939093168352505060010191905056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a264697066735822122018830d95528fb2202a63533ce34650d775eea51a38788746ec04f6baeecb141664736f6c634300080f0033"; + "0x60806040523480156200001157600080fd5b5060405162002f5e38038062002f5e83398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b612ec2806200009c6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630a1bb8b5146100515780632a6ded741461006657806359c1b56b14610079578063c2f0329f146100a8575b600080fd5b61006461005f36600461261d565b6100bb565b005b6100646100743660046126c9565b6103bb565b60005461008c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100646100b636600461281e565b6103d4565b6100cb6060860160408701612896565b6001600160401b0316816001600160401b0316146100fc57604051630fd8993960e21b815260040160405180910390fd5b61011761010986806128b1565b61011291612901565b61059c565b80519060200120821461013c5760405162fa512960e01b815260040160405180910390fd5b61014685806128b1565b600881811061015757610157612984565b9050602002810190610169919061299a565b6040516101779291906129e0565b60405180910390206101a38660400160208101906101959190612896565b6001600160401b03166105dd565b80519060200120146101c857604051633395483760e01b815260040160405180910390fd5b6101d285806128b1565b60038181106101e3576101e3612984565b90506020028101906101f5919061299a565b6040516102039291906129e0565b6040518091039020610239866020013560405160200161022591815260200190565b6040516020818303038152906040526105f6565b805190602001201461025e576040516313d643bd60e21b815260040160405180910390fd5b6000805460405160609190911b6bffffffffffffffffffffffff191660208201526102c5906102c0906102bb9060340160408051601f198184030181529190526102a889806128b1565b6102b191612901565b8a6020013561064f565b610672565b6106ce565b9050600061033a86604001356040516020016102e391815260200190565b60408051601f1981840301815291905261030060208901896128b1565b61030991612901565b61032c8560028151811061031f5761031f612984565b60200260200101516108f1565b610335906129f0565b61064f565b905061034d61034882610672565b6108f1565b610356906129f0565b6040805160006020820181905291810188905260608082019290925290880135608082015260a00160405160208183030381529060405280519060200120146103b2576040516330d26e5760e11b815260040160405180910390fd5b50505050505050565b604051632974974360e01b815260040160405180910390fd5b6103de81806128b1565b60008181106103ef576103ef612984565b90506020028101906104019190612a14565b61040f90602081019061299a565b60405161041d9291906129e0565b604051809103902083805190602001201461044b5760405163026a287560e51b815260040160405180910390fd5b61045581806128b1565b600081811061046657610466612984565b90506020028101906104789190612a14565b61048690604081019061299a565b6040516104949291906129e0565b60405180910390208280519060200120146104c2576040516310d9300f60e11b815260040160405180910390fd5b6104f76104cf82806128b1565b60008181106104e0576104e0612984565b90506020028101906104f29190612a14565b610a14565b61050182806128b1565b600181811061051257610512612984565b90506020028101906105249190612a14565b61053290604081019061299a565b61053b91612a34565b1461055957604051636589f0e160e11b815260040160405180910390fd5b61057761056682806128b1565b60018181106104e0576104e0612984565b8414610596576040516392cb8fbb60e01b815260040160405180910390fd5b50505050565b60606105a782610c38565b90506105b5815160c0610d71565b816040516020016105c7929190612a7e565b6040516020818303038152906040529050919050565b60606105f06105eb83610f1c565b6105f6565b92915050565b606081516001148015610623575060808260008151811061061957610619612984565b016020015160f81c105b1561062c575090565b61063882516080610d71565b826040516020016105c7929190612a7e565b919050565b6060600061065c85611048565b9050610669818585611064565b95945050505050565b604080518082019091526000808252602082015260008251116106b05760405162461bcd60e51b81526004016106a790612aad565b60405180910390fd5b50604080518082019091528151815260209182019181019190915290565b606060008060006106de85611943565b9194509250905060018160018111156106f9576106f9612b1d565b1461076c5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016106a7565b84516107788385612b49565b146107e05760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016106a7565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816107f75790505093506000835b86518110156108e55760008061086a6040518060400160405280858c6000015161084e9190612b61565b8152602001858c602001516108639190612b49565b9052611943565b5091509150604051806040016040528083836108869190612b49565b8152602001848b6020015161089b9190612b49565b8152508885815181106108b0576108b0612984565b60209081029190910101526108c6600185612b49565b93506108d28183612b49565b6108dc9084612b49565b92505050610824565b50845250919392505050565b6060600080600061090185611943565b91945092509050600081600181111561091c5761091c612b1d565b1461098f5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016106a7565b6109998284612b49565b855114610a055760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016106a7565b61066985602001518484612006565b6000806002610a26604085018561299a565b604051610a349291906129e0565b602060405180830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610a749190612b78565b90506002610a85606085018561299a565b610a9c610a95602088018861299a565b9050612099565b610aa9602088018861299a565b610ab36020612099565b87604051602001610aca9796959493929190612b91565b60408051601f1981840301815290829052610ae491612bde565b602060405180830381855afa158015610b01573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b249190612b78565b915060005b610b3384806128b1565b9050811015610c31576002610b4885806128b1565b83818110610b5857610b58612984565b9050602002810190610b6a9190612bf0565b610b74908061299a565b85610b7f88806128b1565b86818110610b8f57610b8f612984565b9050602002810190610ba19190612bf0565b610baf90602081019061299a565b604051602001610bc3959493929190612c06565b60408051601f1981840301815290829052610bdd91612bde565b602060405180830381855afa158015610bfa573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c1d9190612b78565b925080610c2981612c2e565b915050610b29565b5050919050565b60608151600003610c5c5760408051600080825260208201909252905b5092915050565b6000805b8351811015610ca357838181518110610c7b57610c7b612984565b60200260200101515182610c8f9190612b49565b915080610c9b81612c2e565b915050610c60565b816001600160401b03811115610cbb57610cbb612769565b6040519080825280601f01601f191660200182016040528015610ce5576020820181803683370190505b50925060009050602083015b8451821015610d69576000858381518110610d0e57610d0e612984565b602002602001015190506000602082019050610d2c83828451612108565b868481518110610d3e57610d3e612984565b60200260200101515183610d529190612b49565b925050508180610d6190612c2e565b925050610cf1565b505050919050565b60606038831015610dd75760408051600180825281830190925290602082018180368337019050509050610da58284612c47565b60f81b81600081518110610dbb57610dbb612984565b60200101906001600160f81b031916908160001a9053506105f0565b600060015b610de68186612c82565b15610e0c5781610df581612c2e565b9250610e05905061010082612c96565b9050610ddc565b610e17826001612b49565b6001600160401b03811115610e2e57610e2e612769565b6040519080825280601f01601f191660200182016040528015610e58576020820181803683370190505b509250610e658483612c47565b610e70906037612c47565b60f81b83600081518110610e8657610e86612984565b60200101906001600160f81b031916908160001a905350600190505b818111610f1457610100610eb68284612b61565b610ec290610100612d99565b610ecc9087612c82565b610ed69190612da5565b60f81b838281518110610eeb57610eeb612984565b60200101906001600160f81b031916908160001a90535080610f0c81612c2e565b915050610ea2565b505092915050565b6060600082604051602001610f3391815260200190565b604051602081830303815290604052905060005b6020811015610f8a57818181518110610f6257610f62612984565b01602001516001600160f81b031916600003610f8a5780610f8281612c2e565b915050610f47565b610f95816020612b61565b6001600160401b03811115610fac57610fac612769565b6040519080825280601f01601f191660200182016040528015610fd6576020820181803683370190505b50925060005b8351811015610d69578282610ff081612c2e565b93508151811061100257611002612984565b602001015160f81c60f81b84828151811061101f5761101f612984565b60200101906001600160f81b031916908160001a9053508061104081612c2e565b915050610fdc565b606081805190602001206040516020016105c791815260200190565b606060008451116110af5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106a7565b60006110ba84612165565b905060006110c786612249565b90506000846040516020016110de91815260200190565b60405160208183030381529060405290506000805b84518110156118e557600085828151811061111057611110612984565b6020026020010151905084518311156111825760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106a7565b82600003611270576111b1604051806040016040528060068152602001651a5b881b5c1d60d21b8152506122ac565b80516111bc906122f2565b6111d0816000015180519060200120612335565b6111d988612335565b8051805160209182012060405161121f926111f992910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61126b5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106a7565b611366565b8051516020116112f6578051805160209182012060405161129a926111f992910190815260200190565b61126b5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106a7565b8051845160208087019190912082519190920120146113665760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106a7565b61137260106001612b49565b8160200151510361150d57845183036114a55761139f816020015160108151811061031f5761031f612984565b965060008751116114185760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106a7565b600186516114269190612b61565b821461149a5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106a7565b50505050505061193c565b60008584815181106114b9576114b9612984565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106114e4576114e4612984565b602002602001015190506114f78161237a565b9550611504600186612b49565b945050506118d2565b6002816020015151036118795760006115258261239f565b905060008160008151811061153c5761153c612984565b016020015160f81c90506000611553600283612db9565b61155e906002612ddb565b9050600061156f848360ff166123c3565b9050600061157d8a896123c3565b9050600061158b83836123f9565b9050808351146116035760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106a7565b60ff851660021480611618575060ff85166003145b156117b957808251146116935760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106a7565b6116ad876020015160018151811061031f5761031f612984565b9c5060008d51116117265760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106a7565b60018c516117349190612b61565b88146117a85760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106a7565b50505050505050505050505061193c565b60ff851615806117cc575060ff85166001145b1561180b576117f887602001516001815181106117eb576117eb612984565b602002602001015161237a565b9950611804818a612b49565b985061186e565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106a7565b5050505050506118d2565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106a7565b50806118dd81612c2e565b9150506110f3565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106a7565b9392505050565b60008060008084600001511161196b5760405162461bcd60e51b81526004016106a790612aad565b6020840151805160001a607f8111611990576000600160009450945094505050611fff565b60b78111611aed5760006119a5608083612b61565b905080876000015111611a255760405162461bcd60e51b815260206004820152604e6024820152600080516020612e6d83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016106a7565b6001838101516001600160f81b0319169082141580611a525750600160ff1b6001600160f81b0319821610155b611ada5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016106a7565b5060019550935060009250611fff915050565b60bf8111611d2e576000611b0260b783612b61565b905080876000015111611b855760405162461bcd60e51b81526020600482015260516024820152600080516020612e6d83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016106a7565b60018301516001600160f81b0319166000819003611c0c5760405162461bcd60e51b815260206004820152604a6024820152600080516020612e6d83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016106a7565b600184015160088302610100031c60378111611c8f5760405162461bcd60e51b81526020600482015260486024820152600080516020612e6d83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016106a7565b611c998184612b49565b895111611d115760405162461bcd60e51b815260206004820152604c6024820152600080516020612e6d83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016106a7565b611d1c836001612b49565b9750955060009450611fff9350505050565b60f78111611dd0576000611d4360c083612b61565b905080876000015111611dbf5760405162461bcd60e51b815260206004820152604a6024820152600080516020612e6d83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016106a7565b600195509350849250611fff915050565b6000611ddd60f783612b61565b905080876000015111611e5c5760405162461bcd60e51b815260206004820152604d6024820152600080516020612e6d83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016106a7565b60018301516001600160f81b0319166000819003611ee15760405162461bcd60e51b81526020600482015260486024820152600080516020612e6d83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016106a7565b600184015160088302610100031c60378111611f625760405162461bcd60e51b81526020600482015260466024820152600080516020612e6d83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016106a7565b611f6c8184612b49565b895111611fe25760405162461bcd60e51b815260206004820152604a6024820152600080516020612e6d83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016106a7565b611fed836001612b49565b9750955060019450611fff9350505050565b9193909250565b6060816001600160401b0381111561202057612020612769565b6040519080825280601f01601f19166020018201604052801561204a576020820181803683370190505b509050811561193c57600061205f8486612b49565b90506020820160005b84811015612080578281015182820152602001612068565b8481111561208f576000858301525b5050509392505050565b6060805b608083106120db578083607f1660801760f81b6040516020016120c1929190612dfe565b60408051601f198184030190525260079290921c9161209d565b808360f81b6040516020016120f1929190612dfe565b604051602081830303815290604052915050919050565b8282825b602081106121445781518352612123602084612b49565b9250612130602083612b49565b915061213d602082612b61565b905061210c565b905182516020929092036101000a6000190180199091169116179052505050565b8051606090806001600160401b0381111561218257612182612769565b6040519080825280602002602001820160405280156121c757816020015b60408051808201909152606080825260208201528152602001906001900390816121a05790505b50915060005b81811015610c315760405180604001604052808583815181106121f2576121f2612984565b6020026020010151815260200161222186848151811061221457612214612984565b6020026020010151612476565b81525083828151811061223657612236612984565b60209081029190910101526001016121cd565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b838110156122a1578060011b82018184015160001a8060041c8253600f811660018301535050600101612273565b509295945050505050565b6122ef816040516024016122c09190612e59565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052612484565b50565b6122ef816040516024016123069190612e59565b60408051601f198184030181529190526020810180516001600160e01b03166305f3bfab60e11b179052612484565b6122ef8160405160240161234b91815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166327b7cf8560e01b179052612484565b6060602082600001511061239657612391826108f1565b6105f0565b6105f08261248d565b60606105f06123be836020015160008151811061031f5761031f612984565b612249565b6060825182106123e257506040805160208101909152600081526105f0565b61193c83838486516123f49190612b61565b6124a3565b600080825184511061240c57825161240f565b83515b90505b8082108015612466575082828151811061242e5761242e612984565b602001015160f81c60f81b6001600160f81b03191684838151811061245557612455612984565b01602001516001600160f81b031916145b15610c5557816001019150612412565b60606105f06102c083610672565b6122ef816125e5565b60606105f0826020015160008460000151612006565b60608182601f0110156124e95760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106a7565b82828401101561252c5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106a7565b818301845110156125735760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106a7565b60608215801561259257604051915060008252602082016040526125dc565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156125cb5780518352602092830192016125b3565b5050858452601f01601f1916604052505b50949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b80356001600160401b038116811461064a57600080fd5b600080600080600060a0868803121561263557600080fd5b85356001600160401b038082111561264c57600080fd5b908701906060828a03121561266057600080fd5b9095506020870135908082111561267657600080fd5b5086016080818903121561268957600080fd5b935060408601359250606086013591506126a560808701612606565b90509295509295909350565b6000604082840312156126c357600080fd5b50919050565b600080600080606085870312156126df57600080fd5b8435935060208501356001600160401b03808211156126fd57600080fd5b818701915087601f83011261271157600080fd5b81358181111561272057600080fd5b88602082850101111561273257600080fd5b60208301955080945050604087013591508082111561275057600080fd5b5061275d878288016126b1565b91505092959194509250565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156127a7576127a7612769565b604052919050565b600082601f8301126127c057600080fd5b81356001600160401b038111156127d9576127d9612769565b6127ec601f8201601f191660200161277f565b81815284602083860101111561280157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561283457600080fd5b8435935060208501356001600160401b038082111561285257600080fd5b61285e888389016127af565b9450604087013591508082111561287457600080fd5b612880888389016127af565b9350606087013591508082111561275057600080fd5b6000602082840312156128a857600080fd5b61193c82612606565b6000808335601e198436030181126128c857600080fd5b8301803591506001600160401b038211156128e257600080fd5b6020019150600581901b36038213156128fa57600080fd5b9250929050565b60006001600160401b038084111561291b5761291b612769565b8360051b602061292c81830161277f565b86815291850191818101903684111561294457600080fd5b865b848110156129785780358681111561295e5760008081fd5b61296a36828b016127af565b845250918301918301612946565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126129b157600080fd5b8301803591506001600160401b038211156129cb57600080fd5b6020019150368190038213156128fa57600080fd5b8183823760009101908152919050565b805160208083015191908110156126c35760001960209190910360031b1b16919050565b60008235607e19833603018112612a2a57600080fd5b9190910192915050565b803560208310156105f057600019602084900360031b1b1692915050565b60005b83811015612a6d578181015183820152602001612a55565b838111156105965750506000910152565b60008351612a90818460208801612a52565b835190830190612aa4818360208801612a52565b01949350505050565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612b5c57612b5c612b33565b500190565b600082821015612b7357612b73612b33565b500390565b600060208284031215612b8a57600080fd5b5051919050565b868882376000878201600081528751612bae818360208c01612a52565b018587823760009086019081528451612bcb818360208901612a52565b0192835250506020019695505050505050565b60008251612a2a818460208701612a52565b60008235603e19833603018112612a2a57600080fd5b8486823760008582018581528385602083013760009301602001928352509095945050505050565b600060018201612c4057612c40612b33565b5060010190565b600060ff821660ff84168060ff03821115612c6457612c64612b33565b019392505050565b634e487b7160e01b600052601260045260246000fd5b600082612c9157612c91612c6c565b500490565b6000816000190483118215151615612cb057612cb0612b33565b500290565b600181815b80851115612cf0578160001904821115612cd657612cd6612b33565b80851615612ce357918102915b93841c9390800290612cba565b509250929050565b600082612d07575060016105f0565b81612d14575060006105f0565b8160018114612d2a5760028114612d3457612d50565b60019150506105f0565b60ff841115612d4557612d45612b33565b50506001821b6105f0565b5060208310610133831016604e8410600b8410161715612d73575081810a6105f0565b612d7d8383612cb5565b8060001904821115612d9157612d91612b33565b029392505050565b600061193c8383612cf8565b600082612db457612db4612c6c565b500690565b600060ff831680612dcc57612dcc612c6c565b8060ff84160691505092915050565b600060ff821660ff841680821015612df557612df5612b33565b90039392505050565b60008351612e10818460208801612a52565b6001600160f81b0319939093169190920190815260010192915050565b60008151808452612e45816020860160208601612a52565b601f01601f19169290920160200192915050565b60208152600061193c6020830184612e2d56fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220b7ce45aa76fa9c656b479cb818ea50105af74f628af8348175602c18d6d3561664736f6c634300080f0033"; type OptimisticProofVerifierConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/SequencerSignatureVerifier__factory.ts b/src/evm/contracts/factories/SequencerSignatureVerifier__factory.ts index a763ff53..f2fc9b1e 100644 --- a/src/evm/contracts/factories/SequencerSignatureVerifier__factory.ts +++ b/src/evm/contracts/factories/SequencerSignatureVerifier__factory.ts @@ -292,7 +292,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b50604051610e39380380610e3983398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a051610d896100b06000396000818160ba0152610584015260008181607601526105ee0152610d896000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632a6ded741461005c57806375fd4ca91461007157806385e1f4d0146100b5578063c2f0329f146100ea578063e8d90039146100fd575b600080fd5b61006f61006a3660046109a3565b610110565b005b6100987f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100ac565b61006f6100f8366004610a16565b610129565b61006f61010b366004610ab2565b610313565b604051632974974360e01b815260040160405180910390fd5b6101338180610b13565b600081811061014457610144610b5d565b90506020028101906101569190610b73565b610164906020810190610b93565b604051610172929190610bda565b6040518091039020858560405161018a929190610bda565b6040518091039020146101b05760405163026a287560e51b815260040160405180910390fd5b6101ba8180610b13565b60008181106101cb576101cb610b5d565b90506020028101906101dd9190610b73565b6101eb906040810190610b93565b6040516101f9929190610bda565b60405180910390208383604051610211929190610bda565b604051809103902014610237576040516310d9300f60e11b815260040160405180910390fd5b61026c6102448280610b13565b600081811061025557610255610b5d565b90506020028101906102679190610b73565b610327565b6102768280610b13565b600181811061028757610287610b5d565b90506020028101906102999190610b73565b6102a7906040810190610b93565b6102b091610bea565b146102ce57604051636589f0e160e11b815260040160405180910390fd5b6102ec6102db8280610b13565b600181811061025557610255610b5d565b861461030b576040516392cb8fbb60e01b815260040160405180910390fd5b505050505050565b610320858585858561054b565b5050505050565b60008060026103396040850185610b93565b604051610347929190610bda565b602060405180830381855afa158015610364573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906103879190610c08565b905060026103986060850185610b93565b6103af6103a86020880188610b93565b9050610659565b6103bc6020880188610b93565b6103c66020610659565b876040516020016103dd9796959493929190610c5c565b60408051601f19818403018152908290526103f791610ca0565b602060405180830381855afa158015610414573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104379190610c08565b915060005b6104468480610b13565b905081101561054457600261045b8580610b13565b8381811061046b5761046b610b5d565b905060200281019061047d9190610cb3565b6104879080610b93565b856104928880610b13565b868181106104a2576104a2610b5d565b90506020028101906104b49190610cb3565b6104c2906020810190610b93565b6040516020016104d6959493929190610cc9565b60408051601f19818403018152908290526104f091610ca0565b602060405180830381855afa15801561050d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906105309190610c08565b92508061053c81610cf1565b91505061043c565b5050919050565b604080516020808201889052818301879052606080830187905283518084039091018152608083018452805190820120600060a08401527f000000000000000000000000000000000000000000000000000000000000000060c084015260e080840191909152835180840390910181526101008301808552815191830191909120601f860183900490920283016101209081019094528481526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169361063293879187918291018382808284376000920191909152506106c892505050565b6001600160a01b031614610320576040516339e27c8560e21b815260040160405180910390fd5b6060805b6080831061069b578083607f1660801760f81b604051602001610681929190610d18565b60408051601f198184030190525260079290921c9161065d565b808360f81b6040516020016106b1929190610d18565b604051602081830303815290604052915050919050565b60008060006106d785856106ee565b915091506106e481610733565b5090505b92915050565b60008082516041036107245760208301516040840151606085015160001a61071887828585610885565b9450945050505061072c565b506000905060025b9250929050565b600081600481111561074757610747610d3d565b0361074f5750565b600181600481111561076357610763610d3d565b036107b55760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064015b60405180910390fd5b60028160048111156107c9576107c9610d3d565b036108165760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107ac565b600381600481111561082a5761082a610d3d565b036108825760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016107ac565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156108bc5750600090506003610940565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610910573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661093957600060019250925050610940565b9150600090505b94509492505050565b60008083601f84011261095b57600080fd5b50813567ffffffffffffffff81111561097357600080fd5b60208301915083602082850101111561072c57600080fd5b60006040828403121561099d57600080fd5b50919050565b600080600080606085870312156109b957600080fd5b84359350602085013567ffffffffffffffff808211156109d857600080fd5b6109e488838901610949565b909550935060408701359150808211156109fd57600080fd5b50610a0a8782880161098b565b91505092959194509250565b60008060008060008060808789031215610a2f57600080fd5b86359550602087013567ffffffffffffffff80821115610a4e57600080fd5b610a5a8a838b01610949565b90975095506040890135915080821115610a7357600080fd5b610a7f8a838b01610949565b90955093506060890135915080821115610a9857600080fd5b50610aa589828a0161098b565b9150509295509295509295565b600080600080600060808688031215610aca57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115610af657600080fd5b610b0288828901610949565b969995985093965092949392505050565b6000808335601e19843603018112610b2a57600080fd5b83018035915067ffffffffffffffff821115610b4557600080fd5b6020019150600581901b360382131561072c57600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610b8957600080fd5b9190910192915050565b6000808335601e19843603018112610baa57600080fd5b83018035915067ffffffffffffffff821115610bc557600080fd5b60200191503681900382131561072c57600080fd5b8183823760009101908152919050565b803560208310156106e857600019602084900360031b1b1692915050565b600060208284031215610c1a57600080fd5b5051919050565b6000815160005b81811015610c425760208185018101518683015201610c28565b81811115610c51576000828601525b509290920192915050565b86888237600087820160008152610c738189610c21565b9050858782376000908601908152610c8b8186610c21565b93845250506020909101979650505050505050565b6000610cac8284610c21565b9392505050565b60008235603e19833603018112610b8957600080fd5b8486823760008582018581528385602083013760009301602001928352509095945050505050565b600060018201610d1157634e487b7160e01b600052601160045260246000fd5b5060010190565b6000610d248285610c21565b6001600160f81b03199390931683525050600101919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220fa89b329a79580f1febe5413c0bb8912ab9cb891a3e8ca344fb2e44cad4b41b464736f6c634300080f0033"; + "0x60c060405234801561001057600080fd5b50604051610e97380380610e9783398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a051610de76100b06000396000818160ba0152610562015260008181607601526105cc0152610de76000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632a6ded741461005c57806375fd4ca91461007157806385e1f4d0146100b5578063c2f0329f146100ea578063e8d90039146100fd575b600080fd5b61006f61006a366004610981565b610110565b005b6100987f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100ac565b61006f6100f8366004610a97565b610129565b61006f61010b366004610b10565b6102f1565b604051632974974360e01b815260040160405180910390fd5b6101338180610b71565b600081811061014457610144610bbb565b90506020028101906101569190610bd1565b610164906020810190610bf1565b604051610172929190610c38565b60405180910390208380519060200120146101a05760405163026a287560e51b815260040160405180910390fd5b6101aa8180610b71565b60008181106101bb576101bb610bbb565b90506020028101906101cd9190610bd1565b6101db906040810190610bf1565b6040516101e9929190610c38565b6040518091039020828051906020012014610217576040516310d9300f60e11b815260040160405180910390fd5b61024c6102248280610b71565b600081811061023557610235610bbb565b90506020028101906102479190610bd1565b610305565b6102568280610b71565b600181811061026757610267610bbb565b90506020028101906102799190610bd1565b610287906040810190610bf1565b61029091610c48565b146102ae57604051636589f0e160e11b815260040160405180910390fd5b6102cc6102bb8280610b71565b600181811061023557610235610bbb565b84146102eb576040516392cb8fbb60e01b815260040160405180910390fd5b50505050565b6102fe8585858585610529565b5050505050565b60008060026103176040850185610bf1565b604051610325929190610c38565b602060405180830381855afa158015610342573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906103659190610c66565b905060026103766060850185610bf1565b61038d6103866020880188610bf1565b9050610637565b61039a6020880188610bf1565b6103a46020610637565b876040516020016103bb9796959493929190610cba565b60408051601f19818403018152908290526103d591610cfe565b602060405180830381855afa1580156103f2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104159190610c66565b915060005b6104248480610b71565b90508110156105225760026104398580610b71565b8381811061044957610449610bbb565b905060200281019061045b9190610d11565b6104659080610bf1565b856104708880610b71565b8681811061048057610480610bbb565b90506020028101906104929190610d11565b6104a0906020810190610bf1565b6040516020016104b4959493929190610d27565b60408051601f19818403018152908290526104ce91610cfe565b602060405180830381855afa1580156104eb573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061050e9190610c66565b92508061051a81610d4f565b91505061041a565b5050919050565b604080516020808201889052818301879052606080830187905283518084039091018152608083018452805190820120600060a08401527f000000000000000000000000000000000000000000000000000000000000000060c084015260e080840191909152835180840390910181526101008301808552815191830191909120601f860183900490920283016101209081019094528481526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169361061093879187918291018382808284376000920191909152506106a692505050565b6001600160a01b0316146102fe576040516339e27c8560e21b815260040160405180910390fd5b6060805b60808310610679578083607f1660801760f81b60405160200161065f929190610d76565b60408051601f198184030190525260079290921c9161063b565b808360f81b60405160200161068f929190610d76565b604051602081830303815290604052915050919050565b60008060006106b585856106cc565b915091506106c281610711565b5090505b92915050565b60008082516041036107025760208301516040840151606085015160001a6106f687828585610863565b9450945050505061070a565b506000905060025b9250929050565b600081600481111561072557610725610d9b565b0361072d5750565b600181600481111561074157610741610d9b565b036107935760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064015b60405180910390fd5b60028160048111156107a7576107a7610d9b565b036107f45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161078a565b600381600481111561080857610808610d9b565b036108605760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161078a565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561089a575060009050600361091e565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156108ee573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166109175760006001925092505061091e565b9150600090505b94509492505050565b60008083601f84011261093957600080fd5b50813567ffffffffffffffff81111561095157600080fd5b60208301915083602082850101111561070a57600080fd5b60006040828403121561097b57600080fd5b50919050565b6000806000806060858703121561099757600080fd5b84359350602085013567ffffffffffffffff808211156109b657600080fd5b6109c288838901610927565b909550935060408701359150808211156109db57600080fd5b506109e887828801610969565b91505092959194509250565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a1b57600080fd5b813567ffffffffffffffff80821115610a3657610a366109f4565b604051601f8301601f19908116603f01168101908282118183101715610a5e57610a5e6109f4565b81604052838152866020858801011115610a7757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215610aad57600080fd5b84359350602085013567ffffffffffffffff80821115610acc57600080fd5b610ad888838901610a0a565b94506040870135915080821115610aee57600080fd5b610afa88838901610a0a565b935060608701359150808211156109db57600080fd5b600080600080600060808688031215610b2857600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115610b5457600080fd5b610b6088828901610927565b969995985093965092949392505050565b6000808335601e19843603018112610b8857600080fd5b83018035915067ffffffffffffffff821115610ba357600080fd5b6020019150600581901b360382131561070a57600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610be757600080fd5b9190910192915050565b6000808335601e19843603018112610c0857600080fd5b83018035915067ffffffffffffffff821115610c2357600080fd5b60200191503681900382131561070a57600080fd5b8183823760009101908152919050565b803560208310156106c657600019602084900360031b1b1692915050565b600060208284031215610c7857600080fd5b5051919050565b6000815160005b81811015610ca05760208185018101518683015201610c86565b81811115610caf576000828601525b509290920192915050565b86888237600087820160008152610cd18189610c7f565b9050858782376000908601908152610ce98186610c7f565b93845250506020909101979650505050505050565b6000610d0a8284610c7f565b9392505050565b60008235603e19833603018112610be757600080fd5b8486823760008582018581528385602083013760009301602001928352509095945050505050565b600060018201610d6f57634e487b7160e01b600052601160045260246000fd5b5060010190565b6000610d828285610c7f565b6001600160f81b03199390931683525050600101919050565b634e487b7160e01b600052602160045260246000fdfea26469706673582212204c92df476c295d7ae35dea3637cddf13ac44da4b35b87bc3ab88c3db6aef94bf64736f6c634300080f0033"; type SequencerSignatureVerifierConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/SequencerSoloClient__factory.ts b/src/evm/contracts/factories/SequencerSoloClient__factory.ts index 7451976c..f0935ff0 100644 --- a/src/evm/contracts/factories/SequencerSoloClient__factory.ts +++ b/src/evm/contracts/factories/SequencerSoloClient__factory.ts @@ -303,7 +303,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040526000805460ff1916600217905534801561001d57600080fd5b50604051610a88380380610a8883398101604081905261003c9161006b565b6001600160a01b039182166080521660a0526100a5565b6001600160a01b038116811461006857600080fd5b50565b6000806040838503121561007e57600080fd5b825161008981610053565b602084015190925061009a81610053565b809150509250929050565b60805160a0516109aa6100de6000396000818161015401526101b801526000818160c501528181610272015261038701526109aa6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806357c1c5f41161005b57806357c1c5f414610127578063cb535ab51461013c578063eb7720581461014f578063fdaab4e51461017657600080fd5b80631b738a221461008d5780632b7ac3f3146100c057806344c9af28146100ff57806349ff245e14610112575b600080fd5b6100ad61009b366004610438565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b6100e77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100b7565b6100ad61010d366004610438565b610189565b61012561012036600461049a565b61019f565b005b61012f600281565b6040516100b791906104eb565b61012561014a36600461052b565b610268565b6100e77f000000000000000000000000000000000000000000000000000000000000000081565b6101256101843660046105c0565b61031d565b6000818152600160205260408120545b92915050565b6101ad602060008587610629565b6101b691610653565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166309bd5a606040518163ffffffff1660e01b8152600401602060405180830381865afa158015610214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102389190610671565b1461025657604051632b56254960e01b815260040160405180910390fd5b61026284848484610336565b50505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c2f0329f6102bb6102a9600160208a013561068a565b60009081526001602052604090205490565b6040516001600160e01b031960e084901b1681526102e6919088908890889088908d90600401610767565b60006040518083038186803b1580156102fe57600080fd5b505afa158015610312573d6000803e3d6000fd5b505050505050505050565b604051634dfb272b60e11b815260040160405180910390fd5b6000828152600160205260409020541561037d57600082815260016020526040902054811461037857604051631549535560e01b815260040160405180910390fd5b610262565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e8d9003983836103bc60206000898b610629565b6103c591610653565b6103d2886020818c610629565b6040518663ffffffff1660e01b81526004016103f2959493929190610943565b600060405180830381600087803b15801561040c57600080fd5b505af1158015610420573d6000803e3d6000fd5b50505060009283525060016020526040909120555050565b60006020828403121561044a57600080fd5b5035919050565b60008083601f84011261046357600080fd5b50813567ffffffffffffffff81111561047b57600080fd5b60208301915083602082850101111561049357600080fd5b9250929050565b600080600080606085870312156104b057600080fd5b843567ffffffffffffffff8111156104c757600080fd5b6104d387828801610451565b90989097506020870135966040013595509350505050565b602081016003831061050d57634e487b7160e01b600052602160045260246000fd5b91905290565b60006040828403121561052557600080fd5b50919050565b60008060008060006060868803121561054357600080fd5b853567ffffffffffffffff8082111561055b57600080fd5b61056789838a01610513565b9650602088013591508082111561057d57600080fd5b61058989838a01610451565b909650945060408801359150808211156105a257600080fd5b506105af88828901610451565b969995985093965092949392505050565b6000806000604084860312156105d557600080fd5b833567ffffffffffffffff808211156105ed57600080fd5b6105f987838801610513565b9450602086013591508082111561060f57600080fd5b5061061c86828701610451565b9497909650939450505050565b6000808585111561063957600080fd5b8386111561064657600080fd5b5050820193919092039150565b8035602083101561019957600019602084900360031b1b1692915050565b60006020828403121561068357600080fd5b5051919050565b6000828210156106aa57634e487b7160e01b600052601160045260246000fd5b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126106ef57600080fd5b830160208101925035905067ffffffffffffffff81111561070f57600080fd5b8060051b360382131561049357600080fd5b6000808335601e1984360301811261073857600080fd5b830160208101925035905067ffffffffffffffff81111561075857600080fd5b80360382131561049357600080fd5b8681526080602082015260006107816080830187896106af565b82810360408401526107948186886106af565b905082810360608401526107a884856106d8565b604083526040830181815260608401905060608260051b8501018360005b8481101561092457868303605f1901845236869003607e19018235126107eb57600080fd5b858235016107f981826106d8565b608086526080860181815260a08701905060a08260051b8801018360005b8481101561089a57898303609f1901845236869003603e190182351261083c57600080fd5b8582350161084a8182610721565b6040865261085c6040870182846106af565b91505061086c6020830183610721565b925085820360208701526108818284836106af565b6020978801979096509490940193505050600101610817565b50506108a96020860186610721565b9450925087810360208901526108c08185856106af565b93505050506108d26040830183610721565b86830360408801526108e58382846106af565b925050506108f66060830183610721565b9250858203606087015261090b8284836106af565b60209788019790965094909401935050506001016107c6565b5050602088013560208601528095505050505050979650505050505050565b8581528460208201528360408201526080606082015260006109696080830184866106af565b97965050505050505056fea2646970667358221220b47ba4090acd6cbc3c0fdd2515a036c0fb41d8fb506c1f7dcd2d63664ac2065f64736f6c634300080f0033"; + "0x60c06040526000805460ff1916600217905534801561001d57600080fd5b50604051610a88380380610a8883398101604081905261003c9161006b565b6001600160a01b039182166080521660a0526100a5565b6001600160a01b038116811461006857600080fd5b50565b6000806040838503121561007e57600080fd5b825161008981610053565b602084015190925061009a81610053565b809150509250929050565b60805160a0516109aa6100de6000396000818161015401526101b801526000818160c501528181610272015261038701526109aa6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806357c1c5f41161005b57806357c1c5f414610127578063cb535ab51461013c578063eb7720581461014f578063fdaab4e51461017657600080fd5b80631b738a221461008d5780632b7ac3f3146100c057806344c9af28146100ff57806349ff245e14610112575b600080fd5b6100ad61009b366004610438565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b6100e77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100b7565b6100ad61010d366004610438565b610189565b61012561012036600461049a565b61019f565b005b61012f600281565b6040516100b791906104eb565b61012561014a36600461052b565b610268565b6100e77f000000000000000000000000000000000000000000000000000000000000000081565b6101256101843660046105c0565b61031d565b6000818152600160205260408120545b92915050565b6101ad602060008587610629565b6101b691610653565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166309bd5a606040518163ffffffff1660e01b8152600401602060405180830381865afa158015610214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102389190610671565b1461025657604051632b56254960e01b815260040160405180910390fd5b61026284848484610336565b50505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c2f0329f6102bb6102a9600160208a013561068a565b60009081526001602052604090205490565b6040516001600160e01b031960e084901b1681526102e6919088908890889088908d90600401610767565b60006040518083038186803b1580156102fe57600080fd5b505afa158015610312573d6000803e3d6000fd5b505050505050505050565b604051634dfb272b60e11b815260040160405180910390fd5b6000828152600160205260409020541561037d57600082815260016020526040902054811461037857604051631549535560e01b815260040160405180910390fd5b610262565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e8d9003983836103bc60206000898b610629565b6103c591610653565b6103d2886020818c610629565b6040518663ffffffff1660e01b81526004016103f2959493929190610943565b600060405180830381600087803b15801561040c57600080fd5b505af1158015610420573d6000803e3d6000fd5b50505060009283525060016020526040909120555050565b60006020828403121561044a57600080fd5b5035919050565b60008083601f84011261046357600080fd5b50813567ffffffffffffffff81111561047b57600080fd5b60208301915083602082850101111561049357600080fd5b9250929050565b600080600080606085870312156104b057600080fd5b843567ffffffffffffffff8111156104c757600080fd5b6104d387828801610451565b90989097506020870135966040013595509350505050565b602081016004831061050d57634e487b7160e01b600052602160045260246000fd5b91905290565b60006040828403121561052557600080fd5b50919050565b60008060008060006060868803121561054357600080fd5b853567ffffffffffffffff8082111561055b57600080fd5b61056789838a01610513565b9650602088013591508082111561057d57600080fd5b61058989838a01610451565b909650945060408801359150808211156105a257600080fd5b506105af88828901610451565b969995985093965092949392505050565b6000806000604084860312156105d557600080fd5b833567ffffffffffffffff808211156105ed57600080fd5b6105f987838801610513565b9450602086013591508082111561060f57600080fd5b5061061c86828701610451565b9497909650939450505050565b6000808585111561063957600080fd5b8386111561064657600080fd5b5050820193919092039150565b8035602083101561019957600019602084900360031b1b1692915050565b60006020828403121561068357600080fd5b5051919050565b6000828210156106aa57634e487b7160e01b600052601160045260246000fd5b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126106ef57600080fd5b830160208101925035905067ffffffffffffffff81111561070f57600080fd5b8060051b360382131561049357600080fd5b6000808335601e1984360301811261073857600080fd5b830160208101925035905067ffffffffffffffff81111561075857600080fd5b80360382131561049357600080fd5b8681526080602082015260006107816080830187896106af565b82810360408401526107948186886106af565b905082810360608401526107a884856106d8565b604083526040830181815260608401905060608260051b8501018360005b8481101561092457868303605f1901845236869003607e19018235126107eb57600080fd5b858235016107f981826106d8565b608086526080860181815260a08701905060a08260051b8801018360005b8481101561089a57898303609f1901845236869003603e190182351261083c57600080fd5b8582350161084a8182610721565b6040865261085c6040870182846106af565b91505061086c6020830183610721565b925085820360208701526108818284836106af565b6020978801979096509490940193505050600101610817565b50506108a96020860186610721565b9450925087810360208901526108c08185856106af565b93505050506108d26040830183610721565b86830360408801526108e58382846106af565b925050506108f66060830183610721565b9250858203606087015261090b8284836106af565b60209788019790965094909401935050506001016107c6565b5050602088013560208601528095505050505050979650505050505050565b8581528460208201528360408201526080606082015260006109696080830184866106af565b97965050505050505056fea2646970667358221220178d9c71cb5f03aa7d679a7dc3f7607e60e005b50fb7c0389482c8a3f144ee7664736f6c634300080f0033"; type SequencerSoloClientConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/index.ts b/src/evm/contracts/factories/index.ts index f833556f..f02f162c 100644 --- a/src/evm/contracts/factories/index.ts +++ b/src/evm/contracts/factories/index.ts @@ -1,6 +1,7 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export * as iLightClientSol from "./ILightClient.sol"; export * as iProofVerifierSol from "./IProofVerifier.sol"; export * as ibcDispatcherSol from "./IbcDispatcher.sol"; export * as marsSol from "./Mars.sol"; @@ -12,7 +13,6 @@ export { Earth__factory } from "./Earth__factory"; export { FeeVault__factory } from "./FeeVault__factory"; export { IDispatcher__factory } from "./IDispatcher__factory"; export { IFeeVault__factory } from "./IFeeVault__factory"; -export { ILightClient__factory } from "./ILightClient__factory"; export { IUniversalChannelHandler__factory } from "./IUniversalChannelHandler__factory"; export { Ibc__factory } from "./Ibc__factory"; export { IbcUtils__factory } from "./IbcUtils__factory"; diff --git a/src/evm/contracts/index.ts b/src/evm/contracts/index.ts index 97073740..5fe3164c 100644 --- a/src/evm/contracts/index.ts +++ b/src/evm/contracts/index.ts @@ -1,6 +1,8 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +import type * as iLightClientSol from "./ILightClient.sol"; +export type { iLightClientSol }; import type * as iProofVerifierSol from "./IProofVerifier.sol"; export type { iProofVerifierSol }; import type * as ibcDispatcherSol from "./IbcDispatcher.sol"; @@ -15,7 +17,6 @@ export type { Earth } from "./Earth"; export type { FeeVault } from "./FeeVault"; export type { IDispatcher } from "./IDispatcher"; export type { IFeeVault } from "./IFeeVault"; -export type { ILightClient } from "./ILightClient"; export type { IUniversalChannelHandler } from "./IUniversalChannelHandler"; export type { Ibc } from "./Ibc"; export type { IbcUtils } from "./IbcUtils"; @@ -42,7 +43,14 @@ export { IbcPacketSender__factory } from "./factories/IbcDispatcher.sol/IbcPacke export { IbcUtils__factory } from "./factories/IbcUtils__factory"; export { IDispatcher__factory } from "./factories/IDispatcher__factory"; export { IFeeVault__factory } from "./factories/IFeeVault__factory"; -export { ILightClient__factory } from "./factories/ILightClient__factory"; +export type { IClientUpdates } from "./ILightClient.sol/IClientUpdates"; +export { IClientUpdates__factory } from "./factories/ILightClient.sol/IClientUpdates__factory"; +export type { ILightClient } from "./ILightClient.sol/ILightClient"; +export { ILightClient__factory } from "./factories/ILightClient.sol/ILightClient__factory"; +export type { IMembershipVerifier } from "./ILightClient.sol/IMembershipVerifier"; +export { IMembershipVerifier__factory } from "./factories/ILightClient.sol/IMembershipVerifier__factory"; +export type { INonMembershipVerifier } from "./ILightClient.sol/INonMembershipVerifier"; +export { INonMembershipVerifier__factory } from "./factories/ILightClient.sol/INonMembershipVerifier__factory"; export type { IAppStateVerifier } from "./IProofVerifier.sol/IAppStateVerifier"; export { IAppStateVerifier__factory } from "./factories/IProofVerifier.sol/IAppStateVerifier__factory"; export type { IProofVerifier } from "./IProofVerifier.sol/IProofVerifier";