Commit ae7c2740 authored by clabby's avatar clabby

Start fixing breaking changes in other packages

parent f20c4cdf
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
"CrossDomainMessenger", "CrossDomainMessenger",
"MIPS", "MIPS",
"PreimageOracle", "PreimageOracle",
"BlockHashOracle", "BlockOracle",
"EAS", "EAS",
"SchemaRegistry" "SchemaRegistry"
] ]
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package bindings
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
)
// BlockHashOracleMetaData contains all meta data concerning the BlockHashOracle contract.
var BlockHashOracleMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[],\"name\":\"BlockHashNotPresent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlockNumberOOB\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"blockHash_\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
Bin: "0x608060405234801561001057600080fd5b50610138806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636057361d1461003b57806399d548aa14610050575b600080fd5b61004e610049366004610112565b610075565b005b61006361005e366004610112565b6100c4565b60405190815260200160405180910390f35b804060008190036100b2576040517fd82756d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60009182526020829052604090912055565b6000818152602081905260408120549081900361010d576040517f37cf270500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60006020828403121561012457600080fd5b503591905056fea164736f6c634300080f000a",
}
// BlockHashOracleABI is the input ABI used to generate the binding from.
// Deprecated: Use BlockHashOracleMetaData.ABI instead.
var BlockHashOracleABI = BlockHashOracleMetaData.ABI
// BlockHashOracleBin is the compiled bytecode used for deploying new contracts.
// Deprecated: Use BlockHashOracleMetaData.Bin instead.
var BlockHashOracleBin = BlockHashOracleMetaData.Bin
// DeployBlockHashOracle deploys a new Ethereum contract, binding an instance of BlockHashOracle to it.
func DeployBlockHashOracle(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BlockHashOracle, error) {
parsed, err := BlockHashOracleMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
}
if parsed == nil {
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BlockHashOracleBin), backend)
if err != nil {
return common.Address{}, nil, nil, err
}
return address, tx, &BlockHashOracle{BlockHashOracleCaller: BlockHashOracleCaller{contract: contract}, BlockHashOracleTransactor: BlockHashOracleTransactor{contract: contract}, BlockHashOracleFilterer: BlockHashOracleFilterer{contract: contract}}, nil
}
// BlockHashOracle is an auto generated Go binding around an Ethereum contract.
type BlockHashOracle struct {
BlockHashOracleCaller // Read-only binding to the contract
BlockHashOracleTransactor // Write-only binding to the contract
BlockHashOracleFilterer // Log filterer for contract events
}
// BlockHashOracleCaller is an auto generated read-only Go binding around an Ethereum contract.
type BlockHashOracleCaller struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// BlockHashOracleTransactor is an auto generated write-only Go binding around an Ethereum contract.
type BlockHashOracleTransactor struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// BlockHashOracleFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
type BlockHashOracleFilterer struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// BlockHashOracleSession is an auto generated Go binding around an Ethereum contract,
// with pre-set call and transact options.
type BlockHashOracleSession struct {
Contract *BlockHashOracle // 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
}
// BlockHashOracleCallerSession is an auto generated read-only Go binding around an Ethereum contract,
// with pre-set call options.
type BlockHashOracleCallerSession struct {
Contract *BlockHashOracleCaller // Generic contract caller binding to set the session for
CallOpts bind.CallOpts // Call options to use throughout this session
}
// BlockHashOracleTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
// with pre-set transact options.
type BlockHashOracleTransactorSession struct {
Contract *BlockHashOracleTransactor // Generic contract transactor binding to set the session for
TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}
// BlockHashOracleRaw is an auto generated low-level Go binding around an Ethereum contract.
type BlockHashOracleRaw struct {
Contract *BlockHashOracle // Generic contract binding to access the raw methods on
}
// BlockHashOracleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
type BlockHashOracleCallerRaw struct {
Contract *BlockHashOracleCaller // Generic read-only contract binding to access the raw methods on
}
// BlockHashOracleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
type BlockHashOracleTransactorRaw struct {
Contract *BlockHashOracleTransactor // Generic write-only contract binding to access the raw methods on
}
// NewBlockHashOracle creates a new instance of BlockHashOracle, bound to a specific deployed contract.
func NewBlockHashOracle(address common.Address, backend bind.ContractBackend) (*BlockHashOracle, error) {
contract, err := bindBlockHashOracle(address, backend, backend, backend)
if err != nil {
return nil, err
}
return &BlockHashOracle{BlockHashOracleCaller: BlockHashOracleCaller{contract: contract}, BlockHashOracleTransactor: BlockHashOracleTransactor{contract: contract}, BlockHashOracleFilterer: BlockHashOracleFilterer{contract: contract}}, nil
}
// NewBlockHashOracleCaller creates a new read-only instance of BlockHashOracle, bound to a specific deployed contract.
func NewBlockHashOracleCaller(address common.Address, caller bind.ContractCaller) (*BlockHashOracleCaller, error) {
contract, err := bindBlockHashOracle(address, caller, nil, nil)
if err != nil {
return nil, err
}
return &BlockHashOracleCaller{contract: contract}, nil
}
// NewBlockHashOracleTransactor creates a new write-only instance of BlockHashOracle, bound to a specific deployed contract.
func NewBlockHashOracleTransactor(address common.Address, transactor bind.ContractTransactor) (*BlockHashOracleTransactor, error) {
contract, err := bindBlockHashOracle(address, nil, transactor, nil)
if err != nil {
return nil, err
}
return &BlockHashOracleTransactor{contract: contract}, nil
}
// NewBlockHashOracleFilterer creates a new log filterer instance of BlockHashOracle, bound to a specific deployed contract.
func NewBlockHashOracleFilterer(address common.Address, filterer bind.ContractFilterer) (*BlockHashOracleFilterer, error) {
contract, err := bindBlockHashOracle(address, nil, nil, filterer)
if err != nil {
return nil, err
}
return &BlockHashOracleFilterer{contract: contract}, nil
}
// bindBlockHashOracle binds a generic wrapper to an already deployed contract.
func bindBlockHashOracle(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
parsed, err := abi.JSON(strings.NewReader(BlockHashOracleABI))
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 (_BlockHashOracle *BlockHashOracleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
return _BlockHashOracle.Contract.BlockHashOracleCaller.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 (_BlockHashOracle *BlockHashOracleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _BlockHashOracle.Contract.BlockHashOracleTransactor.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_BlockHashOracle *BlockHashOracleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _BlockHashOracle.Contract.BlockHashOracleTransactor.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 (_BlockHashOracle *BlockHashOracleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
return _BlockHashOracle.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 (_BlockHashOracle *BlockHashOracleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _BlockHashOracle.Contract.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_BlockHashOracle *BlockHashOracleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _BlockHashOracle.Contract.contract.Transact(opts, method, params...)
}
// Load is a free data retrieval call binding the contract method 0x99d548aa.
//
// Solidity: function load(uint256 _blockNumber) view returns(bytes32 blockHash_)
func (_BlockHashOracle *BlockHashOracleCaller) Load(opts *bind.CallOpts, _blockNumber *big.Int) ([32]byte, error) {
var out []interface{}
err := _BlockHashOracle.contract.Call(opts, &out, "load", _blockNumber)
if err != nil {
return *new([32]byte), err
}
out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
return out0, err
}
// Load is a free data retrieval call binding the contract method 0x99d548aa.
//
// Solidity: function load(uint256 _blockNumber) view returns(bytes32 blockHash_)
func (_BlockHashOracle *BlockHashOracleSession) Load(_blockNumber *big.Int) ([32]byte, error) {
return _BlockHashOracle.Contract.Load(&_BlockHashOracle.CallOpts, _blockNumber)
}
// Load is a free data retrieval call binding the contract method 0x99d548aa.
//
// Solidity: function load(uint256 _blockNumber) view returns(bytes32 blockHash_)
func (_BlockHashOracle *BlockHashOracleCallerSession) Load(_blockNumber *big.Int) ([32]byte, error) {
return _BlockHashOracle.Contract.Load(&_BlockHashOracle.CallOpts, _blockNumber)
}
// Store is a paid mutator transaction binding the contract method 0x6057361d.
//
// Solidity: function store(uint256 _blockNumber) returns()
func (_BlockHashOracle *BlockHashOracleTransactor) Store(opts *bind.TransactOpts, _blockNumber *big.Int) (*types.Transaction, error) {
return _BlockHashOracle.contract.Transact(opts, "store", _blockNumber)
}
// Store is a paid mutator transaction binding the contract method 0x6057361d.
//
// Solidity: function store(uint256 _blockNumber) returns()
func (_BlockHashOracle *BlockHashOracleSession) Store(_blockNumber *big.Int) (*types.Transaction, error) {
return _BlockHashOracle.Contract.Store(&_BlockHashOracle.TransactOpts, _blockNumber)
}
// Store is a paid mutator transaction binding the contract method 0x6057361d.
//
// Solidity: function store(uint256 _blockNumber) returns()
func (_BlockHashOracle *BlockHashOracleTransactorSession) Store(_blockNumber *big.Int) (*types.Transaction, error) {
return _BlockHashOracle.Contract.Store(&_BlockHashOracle.TransactOpts, _blockNumber)
}
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package bindings
import (
"encoding/json"
"github.com/ethereum-optimism/optimism/op-bindings/solc"
)
const BlockHashOracleStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/dispute/BlockHashOracle.sol:BlockHashOracle\",\"label\":\"blockHashes\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_mapping(t_uint256,t_userDefinedValueType(Hash)1001)\"}],\"types\":{\"t_mapping(t_uint256,t_userDefinedValueType(Hash)1001)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e Hash)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_userDefinedValueType(Hash)1001\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Hash)1001\":{\"encoding\":\"inplace\",\"label\":\"Hash\",\"numberOfBytes\":\"32\"}}}"
var BlockHashOracleStorageLayout = new(solc.StorageLayout)
var BlockHashOracleDeployedBin = "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80636057361d1461003b57806399d548aa14610050575b600080fd5b61004e610049366004610112565b610075565b005b61006361005e366004610112565b6100c4565b60405190815260200160405180910390f35b804060008190036100b2576040517fd82756d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60009182526020829052604090912055565b6000818152602081905260408120549081900361010d576040517f37cf270500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60006020828403121561012457600080fd5b503591905056fea164736f6c634300080f000a"
func init() {
if err := json.Unmarshal([]byte(BlockHashOracleStorageLayoutJSON), BlockHashOracleStorageLayout); err != nil {
panic(err)
}
layouts["BlockHashOracle"] = BlockHashOracleStorageLayout
deployedBytecodes["BlockHashOracle"] = BlockHashOracleDeployedBin
}
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package bindings
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
)
// BlockOracleBlockInfo is an auto generated low-level Go binding around an user-defined struct.
type BlockOracleBlockInfo struct {
Hash [32]byte
Timestamp uint64
}
// BlockOracleMetaData contains all meta data concerning the BlockOracle contract.
var BlockOracleMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[],\"name\":\"BlockHashNotPresent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlockNumberOOB\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"load\",\"outputs\":[{\"components\":[{\"internalType\":\"Hash\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"internalType\":\"structBlockOracle.BlockInfo\",\"name\":\"blockInfo_\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
Bin: "0x608060405234801561001057600080fd5b50610279806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636057361d1461003b57806399d548aa14610050575b600080fd5b61004e6100493660046101d0565b61008c565b005b61006361005e3660046101d0565b610151565b604080518251815260209283015167ffffffffffffffff16928101929092520160405180910390f35b804060008190036100c9576040517fd82756d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006100d58343610218565b6100e090600d61022f565b6100ea9042610218565b60408051808201825293845267ffffffffffffffff918216602080860191825260009687528690529420925183559251600190920180547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016929093169190911790915550565b604080518082018252600080825260209182018190528381528082528281208351808501909452805480855260019091015467ffffffffffffffff1692840192909252036101cb576040517f37cf270500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000602082840312156101e257600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561022a5761022a6101e9565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610267576102676101e9565b50029056fea164736f6c634300080f000a",
}
// BlockOracleABI is the input ABI used to generate the binding from.
// Deprecated: Use BlockOracleMetaData.ABI instead.
var BlockOracleABI = BlockOracleMetaData.ABI
// BlockOracleBin is the compiled bytecode used for deploying new contracts.
// Deprecated: Use BlockOracleMetaData.Bin instead.
var BlockOracleBin = BlockOracleMetaData.Bin
// DeployBlockOracle deploys a new Ethereum contract, binding an instance of BlockOracle to it.
func DeployBlockOracle(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BlockOracle, error) {
parsed, err := BlockOracleMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
}
if parsed == nil {
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BlockOracleBin), backend)
if err != nil {
return common.Address{}, nil, nil, err
}
return address, tx, &BlockOracle{BlockOracleCaller: BlockOracleCaller{contract: contract}, BlockOracleTransactor: BlockOracleTransactor{contract: contract}, BlockOracleFilterer: BlockOracleFilterer{contract: contract}}, nil
}
// BlockOracle is an auto generated Go binding around an Ethereum contract.
type BlockOracle struct {
BlockOracleCaller // Read-only binding to the contract
BlockOracleTransactor // Write-only binding to the contract
BlockOracleFilterer // Log filterer for contract events
}
// BlockOracleCaller is an auto generated read-only Go binding around an Ethereum contract.
type BlockOracleCaller struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// BlockOracleTransactor is an auto generated write-only Go binding around an Ethereum contract.
type BlockOracleTransactor struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// BlockOracleFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
type BlockOracleFilterer struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// BlockOracleSession is an auto generated Go binding around an Ethereum contract,
// with pre-set call and transact options.
type BlockOracleSession struct {
Contract *BlockOracle // 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
}
// BlockOracleCallerSession is an auto generated read-only Go binding around an Ethereum contract,
// with pre-set call options.
type BlockOracleCallerSession struct {
Contract *BlockOracleCaller // Generic contract caller binding to set the session for
CallOpts bind.CallOpts // Call options to use throughout this session
}
// BlockOracleTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
// with pre-set transact options.
type BlockOracleTransactorSession struct {
Contract *BlockOracleTransactor // Generic contract transactor binding to set the session for
TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}
// BlockOracleRaw is an auto generated low-level Go binding around an Ethereum contract.
type BlockOracleRaw struct {
Contract *BlockOracle // Generic contract binding to access the raw methods on
}
// BlockOracleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
type BlockOracleCallerRaw struct {
Contract *BlockOracleCaller // Generic read-only contract binding to access the raw methods on
}
// BlockOracleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
type BlockOracleTransactorRaw struct {
Contract *BlockOracleTransactor // Generic write-only contract binding to access the raw methods on
}
// NewBlockOracle creates a new instance of BlockOracle, bound to a specific deployed contract.
func NewBlockOracle(address common.Address, backend bind.ContractBackend) (*BlockOracle, error) {
contract, err := bindBlockOracle(address, backend, backend, backend)
if err != nil {
return nil, err
}
return &BlockOracle{BlockOracleCaller: BlockOracleCaller{contract: contract}, BlockOracleTransactor: BlockOracleTransactor{contract: contract}, BlockOracleFilterer: BlockOracleFilterer{contract: contract}}, nil
}
// NewBlockOracleCaller creates a new read-only instance of BlockOracle, bound to a specific deployed contract.
func NewBlockOracleCaller(address common.Address, caller bind.ContractCaller) (*BlockOracleCaller, error) {
contract, err := bindBlockOracle(address, caller, nil, nil)
if err != nil {
return nil, err
}
return &BlockOracleCaller{contract: contract}, nil
}
// NewBlockOracleTransactor creates a new write-only instance of BlockOracle, bound to a specific deployed contract.
func NewBlockOracleTransactor(address common.Address, transactor bind.ContractTransactor) (*BlockOracleTransactor, error) {
contract, err := bindBlockOracle(address, nil, transactor, nil)
if err != nil {
return nil, err
}
return &BlockOracleTransactor{contract: contract}, nil
}
// NewBlockOracleFilterer creates a new log filterer instance of BlockOracle, bound to a specific deployed contract.
func NewBlockOracleFilterer(address common.Address, filterer bind.ContractFilterer) (*BlockOracleFilterer, error) {
contract, err := bindBlockOracle(address, nil, nil, filterer)
if err != nil {
return nil, err
}
return &BlockOracleFilterer{contract: contract}, nil
}
// bindBlockOracle binds a generic wrapper to an already deployed contract.
func bindBlockOracle(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
parsed, err := abi.JSON(strings.NewReader(BlockOracleABI))
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 (_BlockOracle *BlockOracleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
return _BlockOracle.Contract.BlockOracleCaller.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 (_BlockOracle *BlockOracleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _BlockOracle.Contract.BlockOracleTransactor.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_BlockOracle *BlockOracleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _BlockOracle.Contract.BlockOracleTransactor.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 (_BlockOracle *BlockOracleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
return _BlockOracle.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 (_BlockOracle *BlockOracleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _BlockOracle.Contract.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_BlockOracle *BlockOracleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _BlockOracle.Contract.contract.Transact(opts, method, params...)
}
// Load is a free data retrieval call binding the contract method 0x99d548aa.
//
// Solidity: function load(uint256 _blockNumber) view returns((bytes32,uint64) blockInfo_)
func (_BlockOracle *BlockOracleCaller) Load(opts *bind.CallOpts, _blockNumber *big.Int) (BlockOracleBlockInfo, error) {
var out []interface{}
err := _BlockOracle.contract.Call(opts, &out, "load", _blockNumber)
if err != nil {
return *new(BlockOracleBlockInfo), err
}
out0 := *abi.ConvertType(out[0], new(BlockOracleBlockInfo)).(*BlockOracleBlockInfo)
return out0, err
}
// Load is a free data retrieval call binding the contract method 0x99d548aa.
//
// Solidity: function load(uint256 _blockNumber) view returns((bytes32,uint64) blockInfo_)
func (_BlockOracle *BlockOracleSession) Load(_blockNumber *big.Int) (BlockOracleBlockInfo, error) {
return _BlockOracle.Contract.Load(&_BlockOracle.CallOpts, _blockNumber)
}
// Load is a free data retrieval call binding the contract method 0x99d548aa.
//
// Solidity: function load(uint256 _blockNumber) view returns((bytes32,uint64) blockInfo_)
func (_BlockOracle *BlockOracleCallerSession) Load(_blockNumber *big.Int) (BlockOracleBlockInfo, error) {
return _BlockOracle.Contract.Load(&_BlockOracle.CallOpts, _blockNumber)
}
// Store is a paid mutator transaction binding the contract method 0x6057361d.
//
// Solidity: function store(uint256 _blockNumber) returns()
func (_BlockOracle *BlockOracleTransactor) Store(opts *bind.TransactOpts, _blockNumber *big.Int) (*types.Transaction, error) {
return _BlockOracle.contract.Transact(opts, "store", _blockNumber)
}
// Store is a paid mutator transaction binding the contract method 0x6057361d.
//
// Solidity: function store(uint256 _blockNumber) returns()
func (_BlockOracle *BlockOracleSession) Store(_blockNumber *big.Int) (*types.Transaction, error) {
return _BlockOracle.Contract.Store(&_BlockOracle.TransactOpts, _blockNumber)
}
// Store is a paid mutator transaction binding the contract method 0x6057361d.
//
// Solidity: function store(uint256 _blockNumber) returns()
func (_BlockOracle *BlockOracleTransactorSession) Store(_blockNumber *big.Int) (*types.Transaction, error) {
return _BlockOracle.Contract.Store(&_BlockOracle.TransactOpts, _blockNumber)
}
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package bindings
import (
"encoding/json"
"github.com/ethereum-optimism/optimism/op-bindings/solc"
)
const BlockOracleStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/dispute/BlockOracle.sol:BlockOracle\",\"label\":\"blockHashes\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_mapping(t_uint256,t_struct(BlockInfo)1001_storage)\"}],\"types\":{\"t_mapping(t_uint256,t_struct(BlockInfo)1001_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e struct BlockOracle.BlockInfo)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_struct(BlockInfo)1001_storage\"},\"t_struct(BlockInfo)1001_storage\":{\"encoding\":\"inplace\",\"label\":\"struct BlockOracle.BlockInfo\",\"numberOfBytes\":\"64\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Hash)1002\":{\"encoding\":\"inplace\",\"label\":\"Hash\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Timestamp)1003\":{\"encoding\":\"inplace\",\"label\":\"Timestamp\",\"numberOfBytes\":\"8\"}}}"
var BlockOracleStorageLayout = new(solc.StorageLayout)
var BlockOracleDeployedBin = "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80636057361d1461003b57806399d548aa14610050575b600080fd5b61004e6100493660046101d0565b61008c565b005b61006361005e3660046101d0565b610151565b604080518251815260209283015167ffffffffffffffff16928101929092520160405180910390f35b804060008190036100c9576040517fd82756d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006100d58343610218565b6100e090600d61022f565b6100ea9042610218565b60408051808201825293845267ffffffffffffffff918216602080860191825260009687528690529420925183559251600190920180547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016929093169190911790915550565b604080518082018252600080825260209182018190528381528082528281208351808501909452805480855260019091015467ffffffffffffffff1692840192909252036101cb576040517f37cf270500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000602082840312156101e257600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561022a5761022a6101e9565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610267576102676101e9565b50029056fea164736f6c634300080f000a"
func init() {
if err := json.Unmarshal([]byte(BlockOracleStorageLayoutJSON), BlockOracleStorageLayout); err != nil {
panic(err)
}
layouts["BlockOracle"] = BlockOracleStorageLayout
deployedBytecodes["BlockOracle"] = BlockOracleDeployedBin
}
...@@ -30,8 +30,8 @@ var ( ...@@ -30,8 +30,8 @@ var (
// FaultDisputeGameMetaData contains all meta data concerning the FaultDisputeGame contract. // FaultDisputeGameMetaData contains all meta data concerning the FaultDisputeGame contract.
var FaultDisputeGameMetaData = &bind.MetaData{ var FaultDisputeGameMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"Claim\",\"name\":\"_absolutePrestate\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_maxGameDepth\",\"type\":\"uint256\"},{\"internalType\":\"Duration\",\"name\":\"_gameDuration\",\"type\":\"uint64\"},{\"internalType\":\"contractIBigStepper\",\"name\":\"_vm\",\"type\":\"address\"},{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2oo\",\"type\":\"address\"},{\"internalType\":\"contractBlockHashOracle\",\"name\":\"_blockHashOracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotDefendRootClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockTimeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameDepthExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameNotInProgress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPrestate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidStep\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"parentIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimant\",\"type\":\"address\"}],\"name\":\"Move\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumGameStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Resolved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ABSOLUTE_PRESTATE\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLOCK_HASH_ORACLE\",\"outputs\":[{\"internalType\":\"contractBlockHashOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAME_DURATION\",\"outputs\":[{\"internalType\":\"Duration\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_OUTPUT_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_GAME_DEPTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VM\",\"outputs\":[{\"internalType\":\"contractIBigStepper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ident\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_partOffset\",\"type\":\"uint256\"}],\"name\":\"addLocalData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"attack\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondManager\",\"outputs\":[{\"internalType\":\"contractIBondManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"claimData\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"parentIndex\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"countered\",\"type\":\"bool\"},{\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"internalType\":\"Position\",\"name\":\"position\",\"type\":\"uint128\"},{\"internalType\":\"Clock\",\"name\":\"clock\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDataLen\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"len_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdAt\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"createdAt_\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"defend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"extraData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameData\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"},{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameStart\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameType\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l1BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Head\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l2BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengeIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"}],\"name\":\"move\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"status_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rootClaim\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_stateData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", ABI: "[{\"inputs\":[{\"internalType\":\"Claim\",\"name\":\"_absolutePrestate\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_maxGameDepth\",\"type\":\"uint256\"},{\"internalType\":\"Duration\",\"name\":\"_gameDuration\",\"type\":\"uint64\"},{\"internalType\":\"contractIBigStepper\",\"name\":\"_vm\",\"type\":\"address\"},{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2oo\",\"type\":\"address\"},{\"internalType\":\"contractBlockOracle\",\"name\":\"_blockOracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotDefendRootClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockTimeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameDepthExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameNotInProgress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPrestate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1HeadTooOld\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidStep\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"parentIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimant\",\"type\":\"address\"}],\"name\":\"Move\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumGameStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Resolved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ABSOLUTE_PRESTATE\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLOCK_ORACLE\",\"outputs\":[{\"internalType\":\"contractBlockOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAME_DURATION\",\"outputs\":[{\"internalType\":\"Duration\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_OUTPUT_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_GAME_DEPTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VM\",\"outputs\":[{\"internalType\":\"contractIBigStepper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ident\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_partOffset\",\"type\":\"uint256\"}],\"name\":\"addLocalData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"attack\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondManager\",\"outputs\":[{\"internalType\":\"contractIBondManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"claimData\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"parentIndex\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"countered\",\"type\":\"bool\"},{\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"internalType\":\"Position\",\"name\":\"position\",\"type\":\"uint128\"},{\"internalType\":\"Clock\",\"name\":\"clock\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDataLen\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"len_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdAt\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"createdAt_\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"defend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"extraData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameData\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"},{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameStart\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameType\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l1BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Head\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l2BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengeIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"}],\"name\":\"move\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"index\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"Hash\",\"name\":\"outputRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"status_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rootClaim\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_stateData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
Bin: "0x6101a06040523480156200001257600080fd5b5060405162002b2a38038062002b2a83398101604081905262000035916200009a565b6000608081905260a052600560c05260e095909552610100939093526001600160401b03909116610120526001600160a01b039081166101405290811661016052166101805262000122565b6001600160a01b03811681146200009757600080fd5b50565b60008060008060008060c08789031215620000b457600080fd5b86516020880151604089015191975095506001600160401b0381168114620000db57600080fd5b6060880151909450620000ee8162000081565b6080880151909350620001018162000081565b60a0880151909250620001148162000081565b809150509295509295509295565b60805160a05160c05160e0516101005161012051610140516101605161018051612951620001d9600039600081816101c301526117b701526000818161051f0152610871015260008181610492015281816106ae0152611b9801526000818161055301528181610d6a01526113bc01526000818161039401528181610c72015281816111fb015261199c0152600081816102760152611ad601526000610fe701526000610fbe01526000610f9501526129516000f3fe6080604052600436106101ac5760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c14610588578063cf09e0d0146105ec578063d8cc1a3c1461060b578063fa24f7431461062b57600080fd5b8063c0c3a0921461050d578063c31b29ce14610541578063c55cd0c71461057557600080fd5b80638b85902b116100c65780638b85902b146104405780639293129814610480578063bbdc02db146104b4578063bcef3b55146104d057600080fd5b80636361506d146104005780638129fc1c146104165780638980e0cc1461042b57600080fd5b80633218b99d116101595780634778efe8116101335780634778efe81461038257806354fd4d50146103b6578063609d3334146103d8578063632247ea146103ed57600080fd5b80633218b99d146102fb57806335fef56714610335578063363cc4271461034857600080fd5b8063266198f91161018a578063266198f9146102645780632810e1d6146102a6578063298c9005146102bb57600080fd5b8063082e7b41146101b15780631e27052a1461020f578063200d2ed214610231575b600080fd5b3480156101bd57600080fd5b506101e57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561021b57600080fd5b5061022f61022a3660046122cd565b61064f565b005b34801561023d57600080fd5b506000546102579068010000000000000000900460ff1681565b604051610206919061231e565b34801561027057600080fd5b506102987f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610206565b3480156102b257600080fd5b50610257610b58565b3480156102c757600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610298565b34801561030757600080fd5b5060005461031c9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610206565b61022f6103433660046122cd565b610f7e565b34801561035457600080fd5b506000546101e5906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561038e57600080fd5b506102987f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c257600080fd5b506103cb610f8e565b60405161020691906123d5565b3480156103e457600080fd5b506103cb611031565b61022f6103fb366004612404565b61103f565b34801561040c57600080fd5b5061029860015481565b34801561042257600080fd5b5061022f61165b565b34801561043757600080fd5b50600254610298565b34801561044c57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610298565b34801561048c57600080fd5b506101e57f000000000000000000000000000000000000000000000000000000000000000081565b3480156104c057600080fd5b5060405160008152602001610206565b3480156104dc57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610298565b34801561051957600080fd5b506101e57f000000000000000000000000000000000000000000000000000000000000000081565b34801561054d57600080fd5b5061031c7f000000000000000000000000000000000000000000000000000000000000000081565b61022f6105833660046122cd565b611876565b34801561059457600080fd5b506105a86105a3366004612439565b611882565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610206565b3480156105f857600080fd5b5060005467ffffffffffffffff1661031c565b34801561061757600080fd5b5061022f61062636600461249b565b6118f3565b34801561063757600080fd5b50610640611e17565b60405161020693929190612525565b6000805468010000000000000000900460ff166002811115610673576106736122ef565b146106aa576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073b9190612550565b9050826001036107f6576001546040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084015b6020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190612586565b50505050565b8260020361098f576040517fcf8e5cf0000000000000000000000000000000000000000000000000000000008152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135600482015260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063cf8e5cf090602401606060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc91906125ee565b80516040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018790526024810191909152602060448201526064810185905290915073ffffffffffffffffffffffffffffffffffffffff831690639a1f5e7f906084016020604051808303816000875af1158015610964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109889190612586565b5050505050565b82600303610a28576040517f9a1f5e7f00000000000000000000000000000000000000000000000000000000815260048101849052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356024820152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016107ad565b82600403610ac7576040517f9a1f5e7f00000000000000000000000000000000000000000000000000000000815260048101849052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013560c01b6024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016107ad565b82600503610b53576040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018490524660c01b6024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050565b60008060005468010000000000000000900460ff166002811115610b7e57610b7e6122ef565b14610bb5576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610bc7906001906126a9565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610cb157600060028281548110610c0157610c016126c0565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff6401000000009091041615610c525750610bdc565b6002810154600090610c96906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611e55565b905083811015610caa578093508260010194505b5050610bdc565b50600060028381548110610cc757610cc76126c0565b600091825260208220600390910201805490925063ffffffff90811691908214610d315760028281548110610cfe57610cfe6126c0565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610d5d565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610da167ffffffffffffffff8316426126a9565b610dbd836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610dd191906126ef565b11610e08576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610eaa906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610eb49190612736565b67ffffffffffffffff16158015610edb57506fffffffffffffffffffffffffffffffff8414155b15610ee95760029550610eee565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610f3357610f336122ef565b021790556002811115610f4857610f486122ef565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610f8a8282600061103f565b5050565b6060610fb97f0000000000000000000000000000000000000000000000000000000000000000611f0a565b610fe27f0000000000000000000000000000000000000000000000000000000000000000611f0a565b61100b7f0000000000000000000000000000000000000000000000000000000000000000611f0a565b60405160200161101d9392919061275d565b604051602081830303815290604052905090565b6060610f7960206040612047565b6000805468010000000000000000900460ff166002811115611063576110636122ef565b1461109a576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b821580156110a6575080155b156110dd576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600284815481106110f2576110f26126c0565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff8082166060850152700100000000000000000000000000000000909104166080830152825491935091908690811061118d5761118d6126c0565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff9093169290921790915560608201516111f7906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f00000000000000000000000000000000000000000000000000000000000000006112b6826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1611156112f8576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614611358576002836000015163ffffffff1681548110611327576113276126c0565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff1642611391846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166113a591906126ef565b6113af91906126a9565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff82161115611422576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b421790506000611443888660009182526020526040902090565b60008181526003602052604090205490915060ff161561148f576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016003600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060a001604052808b63ffffffff1681526020016000151581526020018a8152602001876fffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548160ff0219169083151502179055506040820151816001015560608201518160020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060808201518160020160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050503373ffffffffffffffffffffffffffffffffffffffff16888a7f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be60405160405180910390a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016116e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff908116909152825460018181018555600094855260209485902084516003909302018054958501511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090961663ffffffff90931692909217949094178155604080840151948201949094556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906399d548aa90611812907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b815260040161183091815260200190565b602060405180830381865afa15801561184d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118719190612586565b600155565b610f8a8282600161103f565b6002818154811061189257600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff166002811115611917576119176122ef565b1461194e576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611963576119636126c0565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b90506119c27f000000000000000000000000000000000000000000000000000000000000000060016126ef565b611a5e826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611a9f576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611b2557611ac3836fffffffffffffffffffffffffffffffff166120de565b67ffffffffffffffff16600003611afc577f00000000000000000000000000000000000000000000000000000000000000009150611b1e565b611b17611b0a6001866127d3565b865463ffffffff16612184565b6001015491505b5083611b3f565b84600101549150611b3c846001611b0a9190612804565b90505b818989604051611b50929190612838565b604051809103902014611b8f576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611bf59493929190612891565b6020604051808303816000875af1158015611c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c389190612586565b600284810154929091149250600091611ce3906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611d7f886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611d8991906128c3565b611d939190612736565b67ffffffffffffffff161590508115158103611ddb576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611e4e611031565b9050909192565b600080611ee2847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b606081600003611f4d57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611f775780611f61816128e4565b9150611f709050600a8361291c565b9150611f51565b60008167ffffffffffffffff811115611f9257611f9261259f565b6040519080825280601f01601f191660200182016040528015611fbc576020820181803683370190505b5090505b841561203f57611fd16001836126a9565b9150611fde600a86612930565b611fe99060306126ef565b60f81b818381518110611ffe57611ffe6126c0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612038600a8661291c565b9450611fc0565b949350505050565b6060600061207e84367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036126ef565b90508267ffffffffffffffff1667ffffffffffffffff8111156120a3576120a361259f565b6040519080825280601f01601f1916602001820160405280156120cd576020820181803683370190505b509150828160208401375092915050565b60008061216b837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b6000806121a2846fffffffffffffffffffffffffffffffff16612221565b9050600283815481106121b7576121b76126c0565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461221a57815460028054909163ffffffff16908110612205576122056126c0565b906000526020600020906003020191506121c8565b5092915050565b600081196001830116816122b5827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b600080604083850312156122e057600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310612359577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b8381101561237a578181015183820152602001612362565b838111156107f05750506000910152565b600081518084526123a381602086016020860161235f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006123e8602083018461238b565b9392505050565b803580151581146123ff57600080fd5b919050565b60008060006060848603121561241957600080fd5b8335925060208401359150612430604085016123ef565b90509250925092565b60006020828403121561244b57600080fd5b5035919050565b60008083601f84011261246457600080fd5b50813567ffffffffffffffff81111561247c57600080fd5b60208301915083602082850101111561249457600080fd5b9250929050565b600080600080600080608087890312156124b457600080fd5b863595506124c4602088016123ef565b9450604087013567ffffffffffffffff808211156124e157600080fd5b6124ed8a838b01612452565b9096509450606089013591508082111561250657600080fd5b5061251389828a01612452565b979a9699509497509295939492505050565b60ff84168152826020820152606060408201526000612547606083018461238b565b95945050505050565b60006020828403121561256257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146123e857600080fd5b60006020828403121561259857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff811681146123ff57600080fd5b60006060828403121561260057600080fd5b6040516060810181811067ffffffffffffffff8211171561264a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251815261265d602084016125ce565b602082015261266e604084016125ce565b60408201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156126bb576126bb61267a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156127025761270261267a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff8084168061275157612751612707565b92169190910692915050565b6000845161276f81846020890161235f565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516127ab816001850160208a0161235f565b600192019182015283516127c681600284016020880161235f565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff838116908316818110156127fc576127fc61267a565b039392505050565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561282f5761282f61267a565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006128a5604083018688612848565b82810360208401526128b8818587612848565b979650505050505050565b600067ffffffffffffffff838116908316818110156127fc576127fc61267a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129155761291561267a565b5060010190565b60008261292b5761292b612707565b500490565b60008261293f5761293f612707565b50069056fea164736f6c634300080f000a", Bin: "0x6101a06040523480156200001257600080fd5b5060405162002df838038062002df883398101604081905262000035916200009a565b6000608081905260a052600660c05260e095909552610100939093526001600160401b03909116610120526001600160a01b039081166101405290811661016052166101805262000122565b6001600160a01b03811681146200009757600080fd5b50565b60008060008060008060c08789031215620000b457600080fd5b86516020880151604089015191975095506001600160401b0381168114620000db57600080fd5b6060880151909450620000ee8162000081565b6080880151909350620001018162000081565b60a0880151909250620001148162000081565b809150509295509295509295565b60805160a05160c05160e0516101005161012051610140516101605161018051612c11620001e7600039600081816103ee01526118f5015260008181610579015281816116c201528181611796015261186f0152600081816104ec015281816107560152611dd10152600081816105ad01528181610cb401526113060152600081816103ba01528181610bbc015281816111450152611bd50152600081816102770152611d0f01526000610f3101526000610f0801526000610edf0152612c116000f3fe6080604052600436106101b75760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c146105e2578063cf09e0d014610646578063d8cc1a3c14610665578063fa24f7431461068557600080fd5b8063c0c3a09214610567578063c31b29ce1461059b578063c55cd0c7146105cf57600080fd5b80638b85902b116100c65780638b85902b1461049a57806392931298146104da578063bbdc02db1461050e578063bcef3b551461052a57600080fd5b80636361506d1461045a5780638129fc1c146104705780638980e0cc1461048557600080fd5b806335fef56711610159578063529184c911610133578063529184c9146103dc57806354fd4d5014610410578063609d333414610432578063632247ea1461044757600080fd5b806335fef56714610336578063363cc427146103495780634778efe8146103a857600080fd5b8063266198f911610195578063266198f9146102655780632810e1d6146102a7578063298c9005146102bc5780633218b99d146102fc57600080fd5b8063013cf08b146101bc5780631e27052a14610210578063200d2ed214610232575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004612506565b6106a9565b604080516fffffffffffffffffffffffffffffffff9485168152939092166020840152908201526060015b60405180910390f35b34801561021c57600080fd5b5061023061022b36600461251f565b6106f7565b005b34801561023e57600080fd5b506000546102589068010000000000000000900460ff1681565b6040516102079190612570565b34801561027157600080fd5b506102997f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610207565b3480156102b357600080fd5b50610258610aa2565b3480156102c857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610299565b34801561030857600080fd5b5060005461031d9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610207565b61023061034436600461251f565b610ec8565b34801561035557600080fd5b50600054610383906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610207565b3480156103b457600080fd5b506102997f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e857600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b34801561041c57600080fd5b50610425610ed8565b6040516102079190612627565b34801561043e57600080fd5b50610425610f7b565b610230610455366004612656565b610f89565b34801561046657600080fd5b5061029960015481565b34801561047c57600080fd5b5061023061156e565b34801561049157600080fd5b50600254610299565b3480156104a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610299565b3480156104e657600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b5060405160008152602001610207565b34801561053657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610299565b34801561057357600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a757600080fd5b5061031d7f000000000000000000000000000000000000000000000000000000000000000081565b6102306105dd36600461251f565b611aaf565b3480156105ee57600080fd5b506106026105fd366004612506565b611abb565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610207565b34801561065257600080fd5b5060005467ffffffffffffffff1661031d565b34801561067157600080fd5b506102306106803660046126d4565b611b2c565b34801561069157600080fd5b5061069a612050565b6040516102079392919061275e565b600381600281106106b957600080fd5b6002020180546001909101546fffffffffffffffffffffffffffffffff80831693507001000000000000000000000000000000009092049091169083565b6000805468010000000000000000900460ff16600281111561071b5761071b612541565b14610752576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190612789565b90508260010361089e576001546040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084015b6020604051808303816000875af1158015610874573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089891906127bf565b50505050565b600483101561096657600183161573ffffffffffffffffffffffffffffffffffffffff8216639a1f5e7f85600384600281106108dc576108dc6127d8565b60020201600101546020876040518563ffffffff1660e01b815260040161091c949392919093845260208401929092526040830152606082015260800190565b6020604051808303816000875af115801561093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095f91906127bf565b5050505050565b82600403610a11576003546040517f9a1f5e7f0000000000000000000000000000000000000000000000000000000081526004810185905270010000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f90608401610855565b82600503610a9d576040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018490524660c01b6024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016020604051808303816000875af1158015610874573d6000803e3d6000fd5b505050565b60008060005468010000000000000000900460ff166002811115610ac857610ac8612541565b14610aff576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610b1190600190612836565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610bfb57600060028281548110610b4b57610b4b6127d8565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff6401000000009091041615610b9c5750610b26565b6002810154600090610be0906fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000061208e565b905083811015610bf4578093508260010194505b5050610b26565b50600060028381548110610c1157610c116127d8565b600091825260208220600390910201805490925063ffffffff90811691908214610c7b5760028281548110610c4857610c486127d8565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610ca7565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610ceb67ffffffffffffffff831642612836565b610d07836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610d1b919061284d565b11610d52576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610df4906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610dfe9190612894565b67ffffffffffffffff16158015610e2557506fffffffffffffffffffffffffffffffff8414155b15610e335760029550610e38565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610e7d57610e7d612541565b021790556002811115610e9257610e92612541565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610ed482826000610f89565b5050565b6060610f037f0000000000000000000000000000000000000000000000000000000000000000612143565b610f2c7f0000000000000000000000000000000000000000000000000000000000000000612143565b610f557f0000000000000000000000000000000000000000000000000000000000000000612143565b604051602001610f67939291906128bb565b604051602081830303815290604052905090565b6060610ec360206040612280565b6000805468010000000000000000900460ff166002811115610fad57610fad612541565b14610fe4576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610ff0575080155b15611027576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002848154811061103c5761103c6127d8565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff808216606085015270010000000000000000000000000000000090910416608083015282549193509190869081106110d7576110d76127d8565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151611141906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000611200826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115611242576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff908116146112a2576002836000015163ffffffff1681548110611271576112716127d8565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff16426112db846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166112ef919061284d565b6112f99190612836565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff8216111561136c576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b42179050600061138d888660009182526020526040902090565b60008181526007602052604090205490915060ff16156113d9576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581528184018e81526fffffffffffffffffffffffffffffffff808d16606085019081528a8216608086019081526002805497880181558a52945160039096027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805495511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909616979099169690961793909317909655517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8401555190518416700100000000000000000000000000000000029316929092177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0909201919091555133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016115f37ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f00642061171c60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b815260040161173a91815260200190565b602060405180830381865afa158015611757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177b91906127bf565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae5576117c6600185612836565b6040518263ffffffff1660e01b81526004016117e491815260200190565b606060405180830381865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118259190612980565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156118b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118da9190612980565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b815260040161196691815260200190565b6040805180830381865afa158015611982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a69190612a0c565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff161015611a06576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060600160405280600186611a1e9190612836565b6fffffffffffffffffffffffffffffffff908116825260408681015182166020808501919091529651928101929092528251838701519082167001000000000000000000000000000000009183168202176003559282015160045581516060810183529681168088528583015190911695870186905293519501859052929092021760055560069190915551600155565b610ed482826001610f89565b60028181548110611acb57600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff166002811115611b5057611b50612541565b14611b87576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611b9c57611b9c6127d8565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611bfb7f0000000000000000000000000000000000000000000000000000000000000000600161284d565b611c97826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611cd8576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611d5e57611cfc836fffffffffffffffffffffffffffffffff16612317565b67ffffffffffffffff16600003611d35577f00000000000000000000000000000000000000000000000000000000000000009150611d57565b611d50611d43600186612a93565b865463ffffffff166123bd565b6001015491505b5083611d78565b84600101549150611d75846001611d439190612ac4565b90505b818989604051611d89929190612af8565b604051809103902014611dc8576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611e2e9493929190612b51565b6020604051808303816000875af1158015611e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7191906127bf565b600284810154929091149250600091611f1c906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611fb8886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611fc29190612b83565b611fcc9190612894565b67ffffffffffffffff161590508115158103612014576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060612087610f7b565b9050909192565b60008061211b847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b60608160000361218657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156121b0578061219a81612ba4565b91506121a99050600a83612bdc565b915061218a565b60008167ffffffffffffffff8111156121cb576121cb612931565b6040519080825280601f01601f1916602001820160405280156121f5576020820181803683370190505b5090505b84156122785761220a600183612836565b9150612217600a86612bf0565b61222290603061284d565b60f81b818381518110612237576122376127d8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612271600a86612bdc565b94506121f9565b949350505050565b606060006122b784367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900361284d565b90508267ffffffffffffffff1667ffffffffffffffff8111156122dc576122dc612931565b6040519080825280601f01601f191660200182016040528015612306576020820181803683370190505b509150828160208401375092915050565b6000806123a4837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b6000806123db846fffffffffffffffffffffffffffffffff1661245a565b9050600283815481106123f0576123f06127d8565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461245357815460028054909163ffffffff1690811061243e5761243e6127d8565b90600052602060002090600302019150612401565b5092915050565b600081196001830116816124ee827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b60006020828403121561251857600080fd5b5035919050565b6000806040838503121561253257600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106125ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b838110156125cc5781810151838201526020016125b4565b838111156108985750506000910152565b600081518084526125f58160208601602086016125b1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061263a60208301846125dd565b9392505050565b8035801515811461265157600080fd5b919050565b60008060006060848603121561266b57600080fd5b833592506020840135915061268260408501612641565b90509250925092565b60008083601f84011261269d57600080fd5b50813567ffffffffffffffff8111156126b557600080fd5b6020830191508360208285010111156126cd57600080fd5b9250929050565b600080600080600080608087890312156126ed57600080fd5b863595506126fd60208801612641565b9450604087013567ffffffffffffffff8082111561271a57600080fd5b6127268a838b0161268b565b9096509450606089013591508082111561273f57600080fd5b5061274c89828a0161268b565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061278060608301846125dd565b95945050505050565b60006020828403121561279b57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461263a57600080fd5b6000602082840312156127d157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561284857612848612807565b500390565b6000821982111561286057612860612807565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806128af576128af612865565b92169190910692915050565b600084516128cd8184602089016125b1565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551612909816001850160208a016125b1565b600192019182015283516129248160028401602088016125b1565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461265157600080fd5b60006060828403121561299257600080fd5b6040516060810181811067ffffffffffffffff821117156129dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526129ef60208401612960565b6020820152612a0060408401612960565b60408201529392505050565b600060408284031215612a1e57600080fd5b6040516040810167ffffffffffffffff8282108183111715612a69577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8160405284518352602085015191508082168214612a8657600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015612abc57612abc612807565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612aef57612aef612807565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612b65604083018688612b08565b8281036020840152612b78818587612b08565b979650505050505050565b600067ffffffffffffffff83811690831681811015612abc57612abc612807565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bd557612bd5612807565b5060010190565b600082612beb57612beb612865565b500490565b600082612bff57612bff612865565b50069056fea164736f6c634300080f000a",
} }
// FaultDisputeGameABI is the input ABI used to generate the binding from. // FaultDisputeGameABI is the input ABI used to generate the binding from.
...@@ -43,7 +43,7 @@ var FaultDisputeGameABI = FaultDisputeGameMetaData.ABI ...@@ -43,7 +43,7 @@ var FaultDisputeGameABI = FaultDisputeGameMetaData.ABI
var FaultDisputeGameBin = FaultDisputeGameMetaData.Bin var FaultDisputeGameBin = FaultDisputeGameMetaData.Bin
// DeployFaultDisputeGame deploys a new Ethereum contract, binding an instance of FaultDisputeGame to it. // DeployFaultDisputeGame deploys a new Ethereum contract, binding an instance of FaultDisputeGame to it.
func DeployFaultDisputeGame(auth *bind.TransactOpts, backend bind.ContractBackend, _absolutePrestate [32]byte, _maxGameDepth *big.Int, _gameDuration uint64, _vm common.Address, _l2oo common.Address, _blockHashOracle common.Address) (common.Address, *types.Transaction, *FaultDisputeGame, error) { func DeployFaultDisputeGame(auth *bind.TransactOpts, backend bind.ContractBackend, _absolutePrestate [32]byte, _maxGameDepth *big.Int, _gameDuration uint64, _vm common.Address, _l2oo common.Address, _blockOracle common.Address) (common.Address, *types.Transaction, *FaultDisputeGame, error) {
parsed, err := FaultDisputeGameMetaData.GetAbi() parsed, err := FaultDisputeGameMetaData.GetAbi()
if err != nil { if err != nil {
return common.Address{}, nil, nil, err return common.Address{}, nil, nil, err
...@@ -52,7 +52,7 @@ func DeployFaultDisputeGame(auth *bind.TransactOpts, backend bind.ContractBacken ...@@ -52,7 +52,7 @@ func DeployFaultDisputeGame(auth *bind.TransactOpts, backend bind.ContractBacken
return common.Address{}, nil, nil, errors.New("GetABI returned nil") return common.Address{}, nil, nil, errors.New("GetABI returned nil")
} }
address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(FaultDisputeGameBin), backend, _absolutePrestate, _maxGameDepth, _gameDuration, _vm, _l2oo, _blockHashOracle) address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(FaultDisputeGameBin), backend, _absolutePrestate, _maxGameDepth, _gameDuration, _vm, _l2oo, _blockOracle)
if err != nil { if err != nil {
return common.Address{}, nil, nil, err return common.Address{}, nil, nil, err
} }
...@@ -232,12 +232,12 @@ func (_FaultDisputeGame *FaultDisputeGameCallerSession) ABSOLUTEPRESTATE() ([32] ...@@ -232,12 +232,12 @@ func (_FaultDisputeGame *FaultDisputeGameCallerSession) ABSOLUTEPRESTATE() ([32]
return _FaultDisputeGame.Contract.ABSOLUTEPRESTATE(&_FaultDisputeGame.CallOpts) return _FaultDisputeGame.Contract.ABSOLUTEPRESTATE(&_FaultDisputeGame.CallOpts)
} }
// BLOCKHASHORACLE is a free data retrieval call binding the contract method 0x082e7b41. // BLOCKORACLE is a free data retrieval call binding the contract method 0x529184c9.
// //
// Solidity: function BLOCK_HASH_ORACLE() view returns(address) // Solidity: function BLOCK_ORACLE() view returns(address)
func (_FaultDisputeGame *FaultDisputeGameCaller) BLOCKHASHORACLE(opts *bind.CallOpts) (common.Address, error) { func (_FaultDisputeGame *FaultDisputeGameCaller) BLOCKORACLE(opts *bind.CallOpts) (common.Address, error) {
var out []interface{} var out []interface{}
err := _FaultDisputeGame.contract.Call(opts, &out, "BLOCK_HASH_ORACLE") err := _FaultDisputeGame.contract.Call(opts, &out, "BLOCK_ORACLE")
if err != nil { if err != nil {
return *new(common.Address), err return *new(common.Address), err
...@@ -249,18 +249,18 @@ func (_FaultDisputeGame *FaultDisputeGameCaller) BLOCKHASHORACLE(opts *bind.Call ...@@ -249,18 +249,18 @@ func (_FaultDisputeGame *FaultDisputeGameCaller) BLOCKHASHORACLE(opts *bind.Call
} }
// BLOCKHASHORACLE is a free data retrieval call binding the contract method 0x082e7b41. // BLOCKORACLE is a free data retrieval call binding the contract method 0x529184c9.
// //
// Solidity: function BLOCK_HASH_ORACLE() view returns(address) // Solidity: function BLOCK_ORACLE() view returns(address)
func (_FaultDisputeGame *FaultDisputeGameSession) BLOCKHASHORACLE() (common.Address, error) { func (_FaultDisputeGame *FaultDisputeGameSession) BLOCKORACLE() (common.Address, error) {
return _FaultDisputeGame.Contract.BLOCKHASHORACLE(&_FaultDisputeGame.CallOpts) return _FaultDisputeGame.Contract.BLOCKORACLE(&_FaultDisputeGame.CallOpts)
} }
// BLOCKHASHORACLE is a free data retrieval call binding the contract method 0x082e7b41. // BLOCKORACLE is a free data retrieval call binding the contract method 0x529184c9.
// //
// Solidity: function BLOCK_HASH_ORACLE() view returns(address) // Solidity: function BLOCK_ORACLE() view returns(address)
func (_FaultDisputeGame *FaultDisputeGameCallerSession) BLOCKHASHORACLE() (common.Address, error) { func (_FaultDisputeGame *FaultDisputeGameCallerSession) BLOCKORACLE() (common.Address, error) {
return _FaultDisputeGame.Contract.BLOCKHASHORACLE(&_FaultDisputeGame.CallOpts) return _FaultDisputeGame.Contract.BLOCKORACLE(&_FaultDisputeGame.CallOpts)
} }
// GAMEDURATION is a free data retrieval call binding the contract method 0xc31b29ce. // GAMEDURATION is a free data retrieval call binding the contract method 0xc31b29ce.
...@@ -776,6 +776,56 @@ func (_FaultDisputeGame *FaultDisputeGameCallerSession) L2BlockNumber() (*big.In ...@@ -776,6 +776,56 @@ func (_FaultDisputeGame *FaultDisputeGameCallerSession) L2BlockNumber() (*big.In
return _FaultDisputeGame.Contract.L2BlockNumber(&_FaultDisputeGame.CallOpts) return _FaultDisputeGame.Contract.L2BlockNumber(&_FaultDisputeGame.CallOpts)
} }
// Proposals is a free data retrieval call binding the contract method 0x013cf08b.
//
// Solidity: function proposals(uint256 ) view returns(uint128 index, uint128 l2BlockNumber, bytes32 outputRoot)
func (_FaultDisputeGame *FaultDisputeGameCaller) Proposals(opts *bind.CallOpts, arg0 *big.Int) (struct {
Index *big.Int
L2BlockNumber *big.Int
OutputRoot [32]byte
}, error) {
var out []interface{}
err := _FaultDisputeGame.contract.Call(opts, &out, "proposals", arg0)
outstruct := new(struct {
Index *big.Int
L2BlockNumber *big.Int
OutputRoot [32]byte
})
if err != nil {
return *outstruct, err
}
outstruct.Index = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
outstruct.L2BlockNumber = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
outstruct.OutputRoot = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte)
return *outstruct, err
}
// Proposals is a free data retrieval call binding the contract method 0x013cf08b.
//
// Solidity: function proposals(uint256 ) view returns(uint128 index, uint128 l2BlockNumber, bytes32 outputRoot)
func (_FaultDisputeGame *FaultDisputeGameSession) Proposals(arg0 *big.Int) (struct {
Index *big.Int
L2BlockNumber *big.Int
OutputRoot [32]byte
}, error) {
return _FaultDisputeGame.Contract.Proposals(&_FaultDisputeGame.CallOpts, arg0)
}
// Proposals is a free data retrieval call binding the contract method 0x013cf08b.
//
// Solidity: function proposals(uint256 ) view returns(uint128 index, uint128 l2BlockNumber, bytes32 outputRoot)
func (_FaultDisputeGame *FaultDisputeGameCallerSession) Proposals(arg0 *big.Int) (struct {
Index *big.Int
L2BlockNumber *big.Int
OutputRoot [32]byte
}, error) {
return _FaultDisputeGame.Contract.Proposals(&_FaultDisputeGame.CallOpts, arg0)
}
// RootClaim is a free data retrieval call binding the contract method 0xbcef3b55. // RootClaim is a free data retrieval call binding the contract method 0xbcef3b55.
// //
// Solidity: function rootClaim() pure returns(bytes32 rootClaim_) // Solidity: function rootClaim() pure returns(bytes32 rootClaim_)
......
...@@ -9,11 +9,11 @@ import ( ...@@ -9,11 +9,11 @@ import (
"github.com/ethereum-optimism/optimism/op-bindings/solc" "github.com/ethereum-optimism/optimism/op-bindings/solc"
) )
const FaultDisputeGameStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"gameStart\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_userDefinedValueType(Timestamp)1014\"},{\"astId\":1001,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"status\",\"offset\":8,\"slot\":\"0\",\"type\":\"t_enum(GameStatus)1007\"},{\"astId\":1002,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"bondManager\",\"offset\":9,\"slot\":\"0\",\"type\":\"t_contract(IBondManager)1006\"},{\"astId\":1003,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"l1Head\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_userDefinedValueType(Hash)1012\"},{\"astId\":1004,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"claimData\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_array(t_struct(ClaimData)1008_storage)dyn_storage\"},{\"astId\":1005,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"claims\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_mapping(t_userDefinedValueType(ClaimHash)1010,t_bool)\"}],\"types\":{\"t_array(t_struct(ClaimData)1008_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct IFaultDisputeGame.ClaimData[]\",\"numberOfBytes\":\"32\",\"base\":\"t_struct(ClaimData)1008_storage\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_contract(IBondManager)1006\":{\"encoding\":\"inplace\",\"label\":\"contract IBondManager\",\"numberOfBytes\":\"20\"},\"t_enum(GameStatus)1007\":{\"encoding\":\"inplace\",\"label\":\"enum GameStatus\",\"numberOfBytes\":\"1\"},\"t_mapping(t_userDefinedValueType(ClaimHash)1010,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(ClaimHash =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_userDefinedValueType(ClaimHash)1010\",\"value\":\"t_bool\"},\"t_struct(ClaimData)1008_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IFaultDisputeGame.ClaimData\",\"numberOfBytes\":\"96\"},\"t_uint32\":{\"encoding\":\"inplace\",\"label\":\"uint32\",\"numberOfBytes\":\"4\"},\"t_userDefinedValueType(Claim)1009\":{\"encoding\":\"inplace\",\"label\":\"Claim\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(ClaimHash)1010\":{\"encoding\":\"inplace\",\"label\":\"ClaimHash\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Clock)1011\":{\"encoding\":\"inplace\",\"label\":\"Clock\",\"numberOfBytes\":\"16\"},\"t_userDefinedValueType(Hash)1012\":{\"encoding\":\"inplace\",\"label\":\"Hash\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Position)1013\":{\"encoding\":\"inplace\",\"label\":\"Position\",\"numberOfBytes\":\"16\"},\"t_userDefinedValueType(Timestamp)1014\":{\"encoding\":\"inplace\",\"label\":\"Timestamp\",\"numberOfBytes\":\"8\"}}}" const FaultDisputeGameStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"gameStart\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_userDefinedValueType(Timestamp)1016\"},{\"astId\":1001,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"status\",\"offset\":8,\"slot\":\"0\",\"type\":\"t_enum(GameStatus)1008\"},{\"astId\":1002,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"bondManager\",\"offset\":9,\"slot\":\"0\",\"type\":\"t_contract(IBondManager)1007\"},{\"astId\":1003,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"l1Head\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_userDefinedValueType(Hash)1014\"},{\"astId\":1004,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"claimData\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_array(t_struct(ClaimData)1009_storage)dyn_storage\"},{\"astId\":1005,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"proposals\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_array(t_struct(OutputProposal)1010_storage)2_storage\"},{\"astId\":1006,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"claims\",\"offset\":0,\"slot\":\"7\",\"type\":\"t_mapping(t_userDefinedValueType(ClaimHash)1012,t_bool)\"}],\"types\":{\"t_array(t_struct(ClaimData)1009_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct IFaultDisputeGame.ClaimData[]\",\"numberOfBytes\":\"32\",\"base\":\"t_struct(ClaimData)1009_storage\"},\"t_array(t_struct(OutputProposal)1010_storage)2_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IFaultDisputeGame.OutputProposal[2]\",\"numberOfBytes\":\"128\",\"base\":\"t_struct(OutputProposal)1010_storage\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_contract(IBondManager)1007\":{\"encoding\":\"inplace\",\"label\":\"contract IBondManager\",\"numberOfBytes\":\"20\"},\"t_enum(GameStatus)1008\":{\"encoding\":\"inplace\",\"label\":\"enum GameStatus\",\"numberOfBytes\":\"1\"},\"t_mapping(t_userDefinedValueType(ClaimHash)1012,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(ClaimHash =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_userDefinedValueType(ClaimHash)1012\",\"value\":\"t_bool\"},\"t_struct(ClaimData)1009_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IFaultDisputeGame.ClaimData\",\"numberOfBytes\":\"96\"},\"t_struct(OutputProposal)1010_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IFaultDisputeGame.OutputProposal\",\"numberOfBytes\":\"64\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint32\":{\"encoding\":\"inplace\",\"label\":\"uint32\",\"numberOfBytes\":\"4\"},\"t_userDefinedValueType(Claim)1011\":{\"encoding\":\"inplace\",\"label\":\"Claim\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(ClaimHash)1012\":{\"encoding\":\"inplace\",\"label\":\"ClaimHash\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Clock)1013\":{\"encoding\":\"inplace\",\"label\":\"Clock\",\"numberOfBytes\":\"16\"},\"t_userDefinedValueType(Hash)1014\":{\"encoding\":\"inplace\",\"label\":\"Hash\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Position)1015\":{\"encoding\":\"inplace\",\"label\":\"Position\",\"numberOfBytes\":\"16\"},\"t_userDefinedValueType(Timestamp)1016\":{\"encoding\":\"inplace\",\"label\":\"Timestamp\",\"numberOfBytes\":\"8\"}}}"
var FaultDisputeGameStorageLayout = new(solc.StorageLayout) var FaultDisputeGameStorageLayout = new(solc.StorageLayout)
var FaultDisputeGameDeployedBin = "0x6080604052600436106101ac5760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c14610588578063cf09e0d0146105ec578063d8cc1a3c1461060b578063fa24f7431461062b57600080fd5b8063c0c3a0921461050d578063c31b29ce14610541578063c55cd0c71461057557600080fd5b80638b85902b116100c65780638b85902b146104405780639293129814610480578063bbdc02db146104b4578063bcef3b55146104d057600080fd5b80636361506d146104005780638129fc1c146104165780638980e0cc1461042b57600080fd5b80633218b99d116101595780634778efe8116101335780634778efe81461038257806354fd4d50146103b6578063609d3334146103d8578063632247ea146103ed57600080fd5b80633218b99d146102fb57806335fef56714610335578063363cc4271461034857600080fd5b8063266198f91161018a578063266198f9146102645780632810e1d6146102a6578063298c9005146102bb57600080fd5b8063082e7b41146101b15780631e27052a1461020f578063200d2ed214610231575b600080fd5b3480156101bd57600080fd5b506101e57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561021b57600080fd5b5061022f61022a3660046122cd565b61064f565b005b34801561023d57600080fd5b506000546102579068010000000000000000900460ff1681565b604051610206919061231e565b34801561027057600080fd5b506102987f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610206565b3480156102b257600080fd5b50610257610b58565b3480156102c757600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610298565b34801561030757600080fd5b5060005461031c9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610206565b61022f6103433660046122cd565b610f7e565b34801561035457600080fd5b506000546101e5906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561038e57600080fd5b506102987f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c257600080fd5b506103cb610f8e565b60405161020691906123d5565b3480156103e457600080fd5b506103cb611031565b61022f6103fb366004612404565b61103f565b34801561040c57600080fd5b5061029860015481565b34801561042257600080fd5b5061022f61165b565b34801561043757600080fd5b50600254610298565b34801561044c57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610298565b34801561048c57600080fd5b506101e57f000000000000000000000000000000000000000000000000000000000000000081565b3480156104c057600080fd5b5060405160008152602001610206565b3480156104dc57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610298565b34801561051957600080fd5b506101e57f000000000000000000000000000000000000000000000000000000000000000081565b34801561054d57600080fd5b5061031c7f000000000000000000000000000000000000000000000000000000000000000081565b61022f6105833660046122cd565b611876565b34801561059457600080fd5b506105a86105a3366004612439565b611882565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610206565b3480156105f857600080fd5b5060005467ffffffffffffffff1661031c565b34801561061757600080fd5b5061022f61062636600461249b565b6118f3565b34801561063757600080fd5b50610640611e17565b60405161020693929190612525565b6000805468010000000000000000900460ff166002811115610673576106736122ef565b146106aa576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073b9190612550565b9050826001036107f6576001546040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084015b6020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190612586565b50505050565b8260020361098f576040517fcf8e5cf0000000000000000000000000000000000000000000000000000000008152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135600482015260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063cf8e5cf090602401606060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc91906125ee565b80516040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018790526024810191909152602060448201526064810185905290915073ffffffffffffffffffffffffffffffffffffffff831690639a1f5e7f906084016020604051808303816000875af1158015610964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109889190612586565b5050505050565b82600303610a28576040517f9a1f5e7f00000000000000000000000000000000000000000000000000000000815260048101849052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356024820152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016107ad565b82600403610ac7576040517f9a1f5e7f00000000000000000000000000000000000000000000000000000000815260048101849052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013560c01b6024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016107ad565b82600503610b53576040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018490524660c01b6024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050565b60008060005468010000000000000000900460ff166002811115610b7e57610b7e6122ef565b14610bb5576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610bc7906001906126a9565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610cb157600060028281548110610c0157610c016126c0565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff6401000000009091041615610c525750610bdc565b6002810154600090610c96906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611e55565b905083811015610caa578093508260010194505b5050610bdc565b50600060028381548110610cc757610cc76126c0565b600091825260208220600390910201805490925063ffffffff90811691908214610d315760028281548110610cfe57610cfe6126c0565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610d5d565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610da167ffffffffffffffff8316426126a9565b610dbd836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610dd191906126ef565b11610e08576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610eaa906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610eb49190612736565b67ffffffffffffffff16158015610edb57506fffffffffffffffffffffffffffffffff8414155b15610ee95760029550610eee565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610f3357610f336122ef565b021790556002811115610f4857610f486122ef565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610f8a8282600061103f565b5050565b6060610fb97f0000000000000000000000000000000000000000000000000000000000000000611f0a565b610fe27f0000000000000000000000000000000000000000000000000000000000000000611f0a565b61100b7f0000000000000000000000000000000000000000000000000000000000000000611f0a565b60405160200161101d9392919061275d565b604051602081830303815290604052905090565b6060610f7960206040612047565b6000805468010000000000000000900460ff166002811115611063576110636122ef565b1461109a576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b821580156110a6575080155b156110dd576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600284815481106110f2576110f26126c0565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff8082166060850152700100000000000000000000000000000000909104166080830152825491935091908690811061118d5761118d6126c0565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff9093169290921790915560608201516111f7906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f00000000000000000000000000000000000000000000000000000000000000006112b6826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1611156112f8576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614611358576002836000015163ffffffff1681548110611327576113276126c0565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff1642611391846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166113a591906126ef565b6113af91906126a9565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff82161115611422576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b421790506000611443888660009182526020526040902090565b60008181526003602052604090205490915060ff161561148f576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016003600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060a001604052808b63ffffffff1681526020016000151581526020018a8152602001876fffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548160ff0219169083151502179055506040820151816001015560608201518160020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060808201518160020160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050503373ffffffffffffffffffffffffffffffffffffffff16888a7f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be60405160405180910390a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016116e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff908116909152825460018181018555600094855260209485902084516003909302018054958501511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090961663ffffffff90931692909217949094178155604080840151948201949094556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906399d548aa90611812907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b815260040161183091815260200190565b602060405180830381865afa15801561184d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118719190612586565b600155565b610f8a8282600161103f565b6002818154811061189257600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff166002811115611917576119176122ef565b1461194e576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611963576119636126c0565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b90506119c27f000000000000000000000000000000000000000000000000000000000000000060016126ef565b611a5e826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611a9f576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611b2557611ac3836fffffffffffffffffffffffffffffffff166120de565b67ffffffffffffffff16600003611afc577f00000000000000000000000000000000000000000000000000000000000000009150611b1e565b611b17611b0a6001866127d3565b865463ffffffff16612184565b6001015491505b5083611b3f565b84600101549150611b3c846001611b0a9190612804565b90505b818989604051611b50929190612838565b604051809103902014611b8f576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611bf59493929190612891565b6020604051808303816000875af1158015611c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c389190612586565b600284810154929091149250600091611ce3906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611d7f886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611d8991906128c3565b611d939190612736565b67ffffffffffffffff161590508115158103611ddb576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611e4e611031565b9050909192565b600080611ee2847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b606081600003611f4d57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611f775780611f61816128e4565b9150611f709050600a8361291c565b9150611f51565b60008167ffffffffffffffff811115611f9257611f9261259f565b6040519080825280601f01601f191660200182016040528015611fbc576020820181803683370190505b5090505b841561203f57611fd16001836126a9565b9150611fde600a86612930565b611fe99060306126ef565b60f81b818381518110611ffe57611ffe6126c0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612038600a8661291c565b9450611fc0565b949350505050565b6060600061207e84367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036126ef565b90508267ffffffffffffffff1667ffffffffffffffff8111156120a3576120a361259f565b6040519080825280601f01601f1916602001820160405280156120cd576020820181803683370190505b509150828160208401375092915050565b60008061216b837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b6000806121a2846fffffffffffffffffffffffffffffffff16612221565b9050600283815481106121b7576121b76126c0565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461221a57815460028054909163ffffffff16908110612205576122056126c0565b906000526020600020906003020191506121c8565b5092915050565b600081196001830116816122b5827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b600080604083850312156122e057600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310612359577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b8381101561237a578181015183820152602001612362565b838111156107f05750506000910152565b600081518084526123a381602086016020860161235f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006123e8602083018461238b565b9392505050565b803580151581146123ff57600080fd5b919050565b60008060006060848603121561241957600080fd5b8335925060208401359150612430604085016123ef565b90509250925092565b60006020828403121561244b57600080fd5b5035919050565b60008083601f84011261246457600080fd5b50813567ffffffffffffffff81111561247c57600080fd5b60208301915083602082850101111561249457600080fd5b9250929050565b600080600080600080608087890312156124b457600080fd5b863595506124c4602088016123ef565b9450604087013567ffffffffffffffff808211156124e157600080fd5b6124ed8a838b01612452565b9096509450606089013591508082111561250657600080fd5b5061251389828a01612452565b979a9699509497509295939492505050565b60ff84168152826020820152606060408201526000612547606083018461238b565b95945050505050565b60006020828403121561256257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146123e857600080fd5b60006020828403121561259857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff811681146123ff57600080fd5b60006060828403121561260057600080fd5b6040516060810181811067ffffffffffffffff8211171561264a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251815261265d602084016125ce565b602082015261266e604084016125ce565b60408201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156126bb576126bb61267a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156127025761270261267a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff8084168061275157612751612707565b92169190910692915050565b6000845161276f81846020890161235f565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516127ab816001850160208a0161235f565b600192019182015283516127c681600284016020880161235f565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff838116908316818110156127fc576127fc61267a565b039392505050565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561282f5761282f61267a565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006128a5604083018688612848565b82810360208401526128b8818587612848565b979650505050505050565b600067ffffffffffffffff838116908316818110156127fc576127fc61267a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129155761291561267a565b5060010190565b60008261292b5761292b612707565b500490565b60008261293f5761293f612707565b50069056fea164736f6c634300080f000a" var FaultDisputeGameDeployedBin = "0x6080604052600436106101b75760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c146105e2578063cf09e0d014610646578063d8cc1a3c14610665578063fa24f7431461068557600080fd5b8063c0c3a09214610567578063c31b29ce1461059b578063c55cd0c7146105cf57600080fd5b80638b85902b116100c65780638b85902b1461049a57806392931298146104da578063bbdc02db1461050e578063bcef3b551461052a57600080fd5b80636361506d1461045a5780638129fc1c146104705780638980e0cc1461048557600080fd5b806335fef56711610159578063529184c911610133578063529184c9146103dc57806354fd4d5014610410578063609d333414610432578063632247ea1461044757600080fd5b806335fef56714610336578063363cc427146103495780634778efe8146103a857600080fd5b8063266198f911610195578063266198f9146102655780632810e1d6146102a7578063298c9005146102bc5780633218b99d146102fc57600080fd5b8063013cf08b146101bc5780631e27052a14610210578063200d2ed214610232575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004612506565b6106a9565b604080516fffffffffffffffffffffffffffffffff9485168152939092166020840152908201526060015b60405180910390f35b34801561021c57600080fd5b5061023061022b36600461251f565b6106f7565b005b34801561023e57600080fd5b506000546102589068010000000000000000900460ff1681565b6040516102079190612570565b34801561027157600080fd5b506102997f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610207565b3480156102b357600080fd5b50610258610aa2565b3480156102c857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610299565b34801561030857600080fd5b5060005461031d9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610207565b61023061034436600461251f565b610ec8565b34801561035557600080fd5b50600054610383906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610207565b3480156103b457600080fd5b506102997f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e857600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b34801561041c57600080fd5b50610425610ed8565b6040516102079190612627565b34801561043e57600080fd5b50610425610f7b565b610230610455366004612656565b610f89565b34801561046657600080fd5b5061029960015481565b34801561047c57600080fd5b5061023061156e565b34801561049157600080fd5b50600254610299565b3480156104a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610299565b3480156104e657600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b5060405160008152602001610207565b34801561053657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610299565b34801561057357600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a757600080fd5b5061031d7f000000000000000000000000000000000000000000000000000000000000000081565b6102306105dd36600461251f565b611aaf565b3480156105ee57600080fd5b506106026105fd366004612506565b611abb565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610207565b34801561065257600080fd5b5060005467ffffffffffffffff1661031d565b34801561067157600080fd5b506102306106803660046126d4565b611b2c565b34801561069157600080fd5b5061069a612050565b6040516102079392919061275e565b600381600281106106b957600080fd5b6002020180546001909101546fffffffffffffffffffffffffffffffff80831693507001000000000000000000000000000000009092049091169083565b6000805468010000000000000000900460ff16600281111561071b5761071b612541565b14610752576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190612789565b90508260010361089e576001546040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084015b6020604051808303816000875af1158015610874573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089891906127bf565b50505050565b600483101561096657600183161573ffffffffffffffffffffffffffffffffffffffff8216639a1f5e7f85600384600281106108dc576108dc6127d8565b60020201600101546020876040518563ffffffff1660e01b815260040161091c949392919093845260208401929092526040830152606082015260800190565b6020604051808303816000875af115801561093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095f91906127bf565b5050505050565b82600403610a11576003546040517f9a1f5e7f0000000000000000000000000000000000000000000000000000000081526004810185905270010000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f90608401610855565b82600503610a9d576040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018490524660c01b6024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016020604051808303816000875af1158015610874573d6000803e3d6000fd5b505050565b60008060005468010000000000000000900460ff166002811115610ac857610ac8612541565b14610aff576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610b1190600190612836565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610bfb57600060028281548110610b4b57610b4b6127d8565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff6401000000009091041615610b9c5750610b26565b6002810154600090610be0906fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000061208e565b905083811015610bf4578093508260010194505b5050610b26565b50600060028381548110610c1157610c116127d8565b600091825260208220600390910201805490925063ffffffff90811691908214610c7b5760028281548110610c4857610c486127d8565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610ca7565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610ceb67ffffffffffffffff831642612836565b610d07836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610d1b919061284d565b11610d52576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610df4906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610dfe9190612894565b67ffffffffffffffff16158015610e2557506fffffffffffffffffffffffffffffffff8414155b15610e335760029550610e38565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610e7d57610e7d612541565b021790556002811115610e9257610e92612541565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610ed482826000610f89565b5050565b6060610f037f0000000000000000000000000000000000000000000000000000000000000000612143565b610f2c7f0000000000000000000000000000000000000000000000000000000000000000612143565b610f557f0000000000000000000000000000000000000000000000000000000000000000612143565b604051602001610f67939291906128bb565b604051602081830303815290604052905090565b6060610ec360206040612280565b6000805468010000000000000000900460ff166002811115610fad57610fad612541565b14610fe4576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610ff0575080155b15611027576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002848154811061103c5761103c6127d8565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff808216606085015270010000000000000000000000000000000090910416608083015282549193509190869081106110d7576110d76127d8565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151611141906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000611200826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115611242576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff908116146112a2576002836000015163ffffffff1681548110611271576112716127d8565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff16426112db846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166112ef919061284d565b6112f99190612836565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff8216111561136c576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b42179050600061138d888660009182526020526040902090565b60008181526007602052604090205490915060ff16156113d9576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581528184018e81526fffffffffffffffffffffffffffffffff808d16606085019081528a8216608086019081526002805497880181558a52945160039096027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805495511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909616979099169690961793909317909655517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8401555190518416700100000000000000000000000000000000029316929092177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0909201919091555133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016115f37ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f00642061171c60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b815260040161173a91815260200190565b602060405180830381865afa158015611757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177b91906127bf565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae5576117c6600185612836565b6040518263ffffffff1660e01b81526004016117e491815260200190565b606060405180830381865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118259190612980565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156118b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118da9190612980565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b815260040161196691815260200190565b6040805180830381865afa158015611982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a69190612a0c565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff161015611a06576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060600160405280600186611a1e9190612836565b6fffffffffffffffffffffffffffffffff908116825260408681015182166020808501919091529651928101929092528251838701519082167001000000000000000000000000000000009183168202176003559282015160045581516060810183529681168088528583015190911695870186905293519501859052929092021760055560069190915551600155565b610ed482826001610f89565b60028181548110611acb57600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff166002811115611b5057611b50612541565b14611b87576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611b9c57611b9c6127d8565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611bfb7f0000000000000000000000000000000000000000000000000000000000000000600161284d565b611c97826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611cd8576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611d5e57611cfc836fffffffffffffffffffffffffffffffff16612317565b67ffffffffffffffff16600003611d35577f00000000000000000000000000000000000000000000000000000000000000009150611d57565b611d50611d43600186612a93565b865463ffffffff166123bd565b6001015491505b5083611d78565b84600101549150611d75846001611d439190612ac4565b90505b818989604051611d89929190612af8565b604051809103902014611dc8576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611e2e9493929190612b51565b6020604051808303816000875af1158015611e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7191906127bf565b600284810154929091149250600091611f1c906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611fb8886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611fc29190612b83565b611fcc9190612894565b67ffffffffffffffff161590508115158103612014576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060612087610f7b565b9050909192565b60008061211b847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b60608160000361218657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156121b0578061219a81612ba4565b91506121a99050600a83612bdc565b915061218a565b60008167ffffffffffffffff8111156121cb576121cb612931565b6040519080825280601f01601f1916602001820160405280156121f5576020820181803683370190505b5090505b84156122785761220a600183612836565b9150612217600a86612bf0565b61222290603061284d565b60f81b818381518110612237576122376127d8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612271600a86612bdc565b94506121f9565b949350505050565b606060006122b784367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900361284d565b90508267ffffffffffffffff1667ffffffffffffffff8111156122dc576122dc612931565b6040519080825280601f01601f191660200182016040528015612306576020820181803683370190505b509150828160208401375092915050565b6000806123a4837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b6000806123db846fffffffffffffffffffffffffffffffff1661245a565b9050600283815481106123f0576123f06127d8565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461245357815460028054909163ffffffff1690811061243e5761243e6127d8565b90600052602060002090600302019150612401565b5092915050565b600081196001830116816124ee827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b60006020828403121561251857600080fd5b5035919050565b6000806040838503121561253257600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106125ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b838110156125cc5781810151838201526020016125b4565b838111156108985750506000910152565b600081518084526125f58160208601602086016125b1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061263a60208301846125dd565b9392505050565b8035801515811461265157600080fd5b919050565b60008060006060848603121561266b57600080fd5b833592506020840135915061268260408501612641565b90509250925092565b60008083601f84011261269d57600080fd5b50813567ffffffffffffffff8111156126b557600080fd5b6020830191508360208285010111156126cd57600080fd5b9250929050565b600080600080600080608087890312156126ed57600080fd5b863595506126fd60208801612641565b9450604087013567ffffffffffffffff8082111561271a57600080fd5b6127268a838b0161268b565b9096509450606089013591508082111561273f57600080fd5b5061274c89828a0161268b565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061278060608301846125dd565b95945050505050565b60006020828403121561279b57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461263a57600080fd5b6000602082840312156127d157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561284857612848612807565b500390565b6000821982111561286057612860612807565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806128af576128af612865565b92169190910692915050565b600084516128cd8184602089016125b1565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551612909816001850160208a016125b1565b600192019182015283516129248160028401602088016125b1565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461265157600080fd5b60006060828403121561299257600080fd5b6040516060810181811067ffffffffffffffff821117156129dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526129ef60208401612960565b6020820152612a0060408401612960565b60408201529392505050565b600060408284031215612a1e57600080fd5b6040516040810167ffffffffffffffff8282108183111715612a69577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8160405284518352602085015191508082168214612a8657600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015612abc57612abc612807565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612aef57612aef612807565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612b65604083018688612b08565b8281036020840152612b78818587612b08565b979650505050505050565b600067ffffffffffffffff83811690831681811015612abc57612abc612807565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bd557612bd5612807565b5060010190565b600082612beb57612beb612865565b500490565b600082612bff57612bff612865565b50069056fea164736f6c634300080f000a"
func init() { func init() {
if err := json.Unmarshal([]byte(FaultDisputeGameStorageLayoutJSON), FaultDisputeGameStorageLayout); err != nil { if err := json.Unmarshal([]byte(FaultDisputeGameStorageLayoutJSON), FaultDisputeGameStorageLayout); err != nil {
......
...@@ -28,7 +28,7 @@ func setupFaultDisputeGame() (common.Address, *bind.TransactOpts, *backends.Simu ...@@ -28,7 +28,7 @@ func setupFaultDisputeGame() (common.Address, *bind.TransactOpts, *backends.Simu
} }
backend := backends.NewSimulatedBackend(core.GenesisAlloc{from: {Balance: big.NewInt(params.Ether)}}, 50_000_000) backend := backends.NewSimulatedBackend(core.GenesisAlloc{from: {Balance: big.NewInt(params.Ether)}}, 50_000_000)
blockHashOracle, _, _, err := bindings.DeployBlockHashOracle(opts, backend) blockHashOracle, _, _, err := bindings.DeployBlockOracle(opts, backend)
if err != nil { if err != nil {
return common.Address{}, nil, nil, nil, err return common.Address{}, nil, nil, nil, err
} }
......
...@@ -53,11 +53,11 @@ func deployDisputeGameContracts(require *require.Assertions, ctx context.Context ...@@ -53,11 +53,11 @@ func deployDisputeGameContracts(require *require.Assertions, ctx context.Context
require.NoError(err) require.NoError(err)
// Deploy the block hash oracle // Deploy the block hash oracle
_, tx, _, err = bindings.DeployBlockHashOracle(opts, client) _, tx, _, err = bindings.DeployBlockOracle(opts, client)
require.NoError(err) require.NoError(err)
blockHashOracleAddr, err := bind.WaitDeployed(ctx, client, tx) blockHashOracleAddr, err := bind.WaitDeployed(ctx, client, tx)
require.NoError(err) require.NoError(err)
blockHashOracle, err := bindings.NewBlockHashOracle(blockHashOracleAddr, client) blockHashOracle, err := bindings.NewBlockOracle(blockHashOracleAddr, client)
require.NoError(err) require.NoError(err)
// Deploy the fault dispute game implementation // Deploy the fault dispute game implementation
......
...@@ -78,7 +78,7 @@ error AlreadyChallenged(); ...@@ -78,7 +78,7 @@ error AlreadyChallenged();
error NotOwner(); error NotOwner();
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
// `BlockHashOracle.sol` Errors // // `BlockOracle.sol` Errors //
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
/// @notice Thrown when a block that is out of the range of the `BLOCKHASH` opcode /// @notice Thrown when a block that is out of the range of the `BLOCKHASH` opcode
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment